1
2
الداعمون ملركز القرية الهندسية نزوى )إحدى مراكز تطوير مؤلفات القرية( @ev_centers تم تصميم هذا الكتاب من قبل فريق ميكنكم الحصول عىل الرازبريي باي وملحقاتها من خالل تطبيق عتاد @ev_ataad @ev_topaz 3
جميع الحقوق محفوظة لدى مؤسسة القرية الهندسية وال يجوز إستخدام الكتاب بأي صورة تجارية إال بإذن خطي من املؤسسة وكل من يخالف ذلك فإنه يتحمل املساءلة القانونية. www.ev-center.com info@ev-center.com +968 22027662 This book is licensed under a Creative Commons Attribution-NonCommercial- NoDerivatives 4.0 International License. املحتوى أعالهمنشوربرخصة املشعاع اإلبداعي.
فريق العمل اإلرشاف العام فهد السيايب فريق اإلعداد عبد العزيز الصخبوري طارق املعمري سليم الراشدي عنود املحاريب التدقيق واملراجعة وائل املغريي التصميم واإلخراج الفني زوينة البوسعيدي إدارة واإلخراج الفني وفاء املجيني توباز للتسويق واإلعالم @ev_topaz
كلمة شكر تتقدم إدارة مؤسسة القرية الهندسية بالشكر الجزيل واملوصول لكل فرد كان له صلة وبصمة مميزة ساهمت بإثراء هذا العمل وإنجازه عىل أتم وجه. إدارة القرية الهندسية 6
البداية يتنافس الجميع اليوم يف سباق عجيب مع الزمن لتحقيق أحدث اإلبتكارات واإلخرتاعات التي من شأنها تبسيط الحياة للبرشية. ويتفنن املهندسون يف شتى أنحاء العامل يف إبداع أساليب ومنتجات جديدة من شأنها خفض الجهد والتكلفة املطلوبة إلنجاز املشاريع واألعامل اليومية. الرازبريي باي هي إحدى هذه املنتجات التي جاءت لخفض تكلفة الحاسوب وجعله أكرث عملية للمشاريع التجريبية التي تتطلب عقال أو معالجا مركزيا. حاسوب بحجم بطاقة اإلئتامن بقدرات رائعة يسمح للمبدعني والهواة ببناء مشاريع أكرث تقدما وتعقيدا سواء يف املعالجة والتحكم أو التواصل وإدارة الشبكات. الكثري من التطبيقات املذهلة بجهاز صغري تحمله عىل يدك. هذاالكتابهومدخلكإىلعاملالرازبرييبايوهوخالصة تجاربنا ودوراتنا التدريبية يف هذا املجال. عكف عىل تصميمه وتدقيقه مجموعة من املهندسني املبدعني ليقدموا لك عزيزي القاريء العريب تقنية الرازبريي باي عىل طبق جميل وبإخراج فني عرصي وراقي. نتمنى أن ينال إعجابك ونرتكك لتحكم عليه بنفسك. إستمتع! فريق اإلعداد 7
ما الذي مييز هذا الكتاب يتميز هذا الكتاب ب : اعتامده بشكل كبري عىل الجانب التطبيقي العميل استخدام الرسومات التوضيحية لغته السهلة البسيطة وإيجاز العبارات لتوصيل املعلومة والفائدة طريقته الفريدة واملتميزة يف رشح التجارب العملية وكتابة أسطر األوامر مواضيعه املتنوعة والشاملة 8
نحن يف القرية الهندسية نبحث دامئا عن التميز, هذا الكتاب يحتوي عىل خاصية QR Code حيث أنه ميكنك من مشاهدة مقاطع الفيديو لكيفية تطبيق التجارب واملشاريع املذكورة يف الكتاب عىل هاتفك املحمول. لتفعيلها اتبع الخطوات التالية : قم بتنزيل تطبيق عتاد من متجر جوجل للتطبيقات أو أي تطبيق آخر ميتلك خاصية قراءة QR code افتح الربنامج وقم بتشغيل خاصية قراءة QR code صوب الكامريا إىل الرمز املربعي يف الصفحة أخريا سيفتح املتصفح يف هاتفك عىل صفحة ويب بها جميع مقاطع الفيديو التابعة للكتاب )يجب أن يكون هاتفك متصال باإلنرتنت لتفعيل هذه الخاصية(. جربها! شاهد واستمتع 9
انتباااه إىل جميع املربمجني ليس من رأى كمن سمع! قد تشعر يف بداية قراءتك لهذا الكتاب ببعض الدوار.. ال بأس.. ستزول هذه اآلثار ما أن تبدأ بكتابة شفرتك الربمجية األوىل عىل جهاز الحاسوب رحلة موفقة
الفهرس العناوين: الحاسوب ومكوناته: الحاسوب 1 18 مكونات الحاسوب 18-19 أنظمة التشغيل 20 مقدمة عن الرازبريي باي: تاريخ الرازبريي باي ما هو الرازبريي باي مكونات الرازبريي باي توزيعات لينكس الداعمة للرازبريي باي أنواع الرازبريي باي أجهزة مشابهة املكونات الالزمة لتشغيل الرازبريي باي تثبيت نظام التشغيل 2 24 25 24 26 27 30 31 34 تشغيل الرازبريي باي: خطوات تشغيل الرازبريي باي نظام التشغيل يف الرازبريي باي 3 44 49 12
الفهرس العناوين: التحكم بالرازبريي باي عن بعد: التحكم بالرازبريي باي من جهاز آخر 66 4 البايثون: 78 79 80 81 84 لغات الربمجة 5 مقدمة عن البايثون سبب التسمية الربنامج املستخدم أساسيات لغة البايثون برمجة الرازبريي باي: 102 103 104 105 106 منافذ التحكم 6 توضيح ملنافذ التحكم برمجة منافذ التحكم GPIO ترقيم منافذ التحكم سلسلة التجارب العملية 13
الفهرس العناوين: بروتوكوالت اإلتصال: بروتوكول UART بروتوكول I2C بروتوكول SPI 7 150 160 167 األدوات وامللحقات: كامريا ويب USB webcam كامريا عالية الدقة املخصصة للرازبريي باي PI Camera Module شاشة اللمس املخصصة للرازبريي باي RPI-LCD السامعة وامليكروفون Speaker & Microphone مودم السليك USB 3G Modem 8 176 180 183 192 202 14
الفهرس العناوين: الشبكات: 212 219 224 226 230 توصيل الرازبريي باي بشبكة اإلنرتنت 9 كيف يتم التواصل بني أكرث من رازبريي باي كيف تتحكم مبنافذ GPIO من خالل الشبكة ضبط خادم DHCP الربيد اإللكرتوين عرب سطر األوامر 15
16 الحاسوب ومكوناته 1
العناوين: الحاسوب مكونات الحاسوب وحدة املعالجة املركزية أجهزة اإلدخال واإلخراج أنظمة التشغيل 17
الحاسوب هو جهاز إلكرتوين قادر عىل استقبال البيانات وتحويلها إىل معلومات ذات قيمة تخزن يف وسائط مختلفة ويف الغالب يكون قادرا عىل تبادل هذه النتائج واملعلومات مع أجهزة أخرى متوافقة. تعمل الحواسيب بربامج خاصة تسمى أنظمة التشغيل وتوفر بيئة مناسبة للمربمجني ليطوروا عليها التطبيقات. مكونات الحاسوب: أجهزة اإلخراج Output وحدة املعالجة املركزية CPU الذاكرة Memory أجهزة اإلدخال Input Devices وحدة املعالجة املركزية وحدة املعالجة املركزية Unit( )Central Processing ويتم اختصار هذا املفهوم بكلمة )CPU( وهي مبثابة عقل الكمبيوتر املسؤول عن تنفيذ و معالجة البيانات. الذاكرة عبارة عن وحدة لتخزين البيانات يف الحاسوب بشكل دائم أو مؤقت. ومن األمثلة عىل الذاكرة املؤقتة للبيانات ذاكرة الوصول العشوايئ )RAM( أما القرص الصلب Disk( )Hard يحتفظ بالبيانات بشكل دائم. 18
أجهزة اإلدخال واإلخراج: هو مصطلح عام يطلق عىل األجهزة التي تستخدم إلدخال وإخراج البيانات للحاسوب. ومثال عىل ذلك لوحة املفاتيح وهي أكرث أجهزة اإلدخال استخداما حيث تستقبل األوامر من املستخدم وتدخلها إىل الحاسوب. أما بالنسبة ألجهزة اإلخراج فإن الشاشات تعترب من أكرث أجهزة اإلخراج استخداما حيث تأخذ املعلومات من الحاسوب وتظهرها للمستخدم مبارشة. 19
أنظمة التشغيل أنظمة التشغيل Systems( )Operating وهي مجموعة من الربامج املسؤولة عن إدارة الحاسوب وتعترب مبثابة الوسيط بني املستخدم )User( والعتاد )Hardware( من خالل توفري واجهة للمستخدم متكن املستخدم من االستفادة من الربمجيات التطبيقية املختلفة كالطباعة أو إجراء العمليات الحسابية وغريها من األمور األخرى. ومن أهم أنظمة التشغيل يف وقتنا الحايل: ١- نظام التشغيل Windows ٢- نظام التشغيل Macintosh ٣- نظام التشغيل Linux نظام التشغيل Windows نظام التشغيل نظام التشغيل Macintosh Linux 20
21
2 áeóقe ÉH ÒHRGôdG 22
العناوين: تاريخ الرازبريي باي ما هو الرازبريي باي مكونات الرازبريي باي توزيعات لينكس الداعمة للرازبريي باي أنواع الرازبريي باي أجهزة مشابهة املكونات الالزمة لتشغيل الرازبريي باي تثبيت نظام التشغيل فك ضغط امللف مسح و تهيئة بطاقة الذاكرة تثبيت نظام التشغيل عىل بطاقة الذاكرة 23
8 5 7 10 4 1 6 2 3 9 مكونات الرازبريي باي تاريخ الرازبريي باي يعود تاريخ الرازبريي باي لعام ٢٠٠٦ حيث قام فريق بقيادة ا يبني ابتون Upton( )Eben من جامعة كامربدج الربيطانية بتطويرثالث مناذج ا ولية عىل مدار 5 سنوات وانطلق الرازبريي باي يف عام ٢٠١١. 24
مدخل الطاقة : Micro USB منفذ لتزويد الرازبريي باي بالطاقة. مدخل بطاقة الذاكرة : SD Card لرتكيب بطاقة الذاكرة والتي تحمل نظام التشغيل وبيانات املستخدم. منافذ التحكم اإللكرتوين : GPIO pin منافذ متعددة للتحكم والتخاطب مع األجهزة اإللكرتونية. مدخل الكامريا : CSI Camera مكان توصيل الكامريات عالية الدقة الخاصة بالرازبريي باي. مدخل : DSI Display 6 7 8 9 10 يستخدم يف توصيل الشاشات اللمسية الخاصة بالرازبريي باي. رشيحة : SoC Broadcom تحتوي عىل معالج البيانات )CPU(, الذاكرة العشوائية,)RAM( ومعالج الرسوميات.)GPU( مخرج العرض : HDMI output مخرج العرض لتوصيل الرازبريي باي بشاشة عالية الجودة. مخرج الصوت : Audio jack مخرج الصوت يستخدم لتوصيل السامعات. مدخل الشبكة : Ethernet يستخدم لتوصيل الرازبريي باي بالشبكة. مداخل :USB تستخدم لتوصيل أجهزة )USB( مثل لوحة املفاتيح و الفأرة. 1 2 3 4 5 الرازبريي باي رازبريي باي Pi( )Raspberry هو جهاز حاسوب متكامل بحجم بطاقة االئتامن تحتوي عىل املكونات األساسية للحاسوب وهي معالج البيانات فئة ARM الذاكرة و وحدات اإلدخال واإلخراج ويتم تشغيل هذا الحاسوب بأنظمة التشغيل مثل نظام لينكس املفتوح املصدر. ميكنك استخدام رازبريي باي كأي حاسوب لتصفح اإلنرتنت وإرسال الربيد اإللكرتوين وكذلك ميكنك عمل مشاريع تحكم إلكرتونية أو استخدامه كبديل عن املتحكامت.)Microcontrollers( 25
1 أنظمة لينكس الداعمة للرازبريي باي نظام :Raspbian هو عبارة عن نظام مفتوح املصدر وتستخدم عىل نظام دبيان Debian حيث تم تحسينه ليتوافق مع الرازبريي باي. ويحتوي عىل حزمة كبرية من الربامج ويعترب هذا النظام الشائع للرازبريي باي. نظام : Pidora هو عبارة عن نظام مفتوح املصدر و تستخدم عىل نظام فيدورا FedoraRemixحيث تم تحسينه ليتوافق مع الرازبريي باي. نظام :Osmc هو عبارة عن مركز للوسائط مفتوح املصدر يستطيع املستخدم من خالله تشغيل عدد من األجهزة املتوافقة مع هذا النظام. كام يستطيع املستخدم تشغيل املرئيات واألصوات سواء كانت من شبكة اإلنرتنت أم من الذاكرة املحلية للجهاز. 2 3 أنواع الرازبريي باي pi B pi A+ pi A Broadcom BCM2835 Broadcom BCM2835 Broadcom BCM2835 chip ARM1176JZ 700MHz ARM1176JZ 700MHz ARM1176JZ 700MHz Processor MB 256 MB 256 MB 256 RAM Yes None None Ethernet 2 1 1 USB SD Card Micro SD SD Card Storage 26 40 26 GPIO pins 26
نظام :Openelec هو عبارة عن توزيعة مصغرة من نظام لينكس مفتوح املصدر. يقوم بتحويل حاسوبك إىل مركز للوسائط ويتميز بسهولة التنصيب والرسعة العالية. نظام :Snappy Ubuntu Core هو عبارة عن نظام مفتوح املصدر قائم عىل نظام أوبونتو Ubuntu حيث تم تحسينه ليتوافق مع الرازبريي باي. يتميز بالرسعة والواقعية واملوثوقية يف الربامج والنظام بشكل عام. 4 5 5 4 3 2 1 pi Zero pi 2 B pi B+ Broadcom BCM2835 Broadcom BCM2836 Broadcom BCM2835 ARM11-1GHz 512MB None ARM Cortex-A7, 900MHz GB 1 Yes ARM1176JZ 700MHz MB 256 Yes 1 Micro SD 40 4 Micro SD 40 2 SD Card 26 27
Pi model A+ Pi model B+ pi Zero 28
Pi model A Pi model B Pi 2 model B 29
مشابهة أجهزة األردوينو: مع باي الرازبريي مقارنة R3 16MHz, 328 ATMega اإلصدار املعالج B 2 Model ARM Cortex-A7, 900MHz 2KB 32KB ال 14 10-bit 6 6 العشوائية الذاكرة الثابتة الذاكرة 1080p الدقة عايل الفيديو تشغيل الرقمي التحكم مخارج عدد التامثيل الدخل مخارج عدد PMW النبيض التعديل مخارج 1GB خارجية بطاقة نعم 8 يوجد ال 1 نعم برنامج من أكرث تشغيل الوقت نفس يف ال الشبكة مدخل الشاشات توصيل منفذ الصوت مخرج املدعومة الربمجية اللغات يوجد ال يوجد ال يوجد ال -C, A r d u i n o E m b e d d e d 10/100 RCA HDMI, Analog HDMI, لينكس يدعمها التي اللغات كل 30
املكونات الالزمة لتشغيل الرازبريي باي ١- بطاقة الذاكرة : لتشغيل الرازبريي باي الخاصة بك سوف تحتاج إىل بعض امللحقات اإلضافية مثل شاشة العرض لتسمح لك برؤية محتويات الرازبريي باي والتعامل معها ولكن ال ميكن الوصول لهذه املحتويات بدون لوحة املفاتيح والفأرة. وهناك عدد من امللحقات اإلضافية األخرى البد من توافر بعضها لتشغيل الرازبريي باي مع إمكانية االستغناء عن البعض كونها ملحقات مساعدة وليست أساسية. ومن هذه امللحقات الرضورية: بطاقة الذاكرة Card( )SD هي بطاقة التخزين التي تحتوي عىل نظام التشغيل الخاص بالرازبريي باي وتأيت مبجموعة من األحجام من بينها نوع املقاس الكامل card( )Full Size SD أو نوع املايكرو,)MicroSD( وميكن أن تستخدم بطاقة التحويل )Adaptor( للتحويل من نوع إىل آخر. و تأيت بطاقة الذاكرة برسعات مختلفة مقسمة إىل فئات )Classes( فالرقم 2 ميثل أقل رسعة والرقم 10 ميثل أعىل رسعة. مالحظة: الرازبريي باي A وB تستخدم بطاقة الذاكرة ذو املقاس الكامل بينام +A Pi و +B Pi و Pi 2 B و Pi Zero فتستخدم نوع املايكرو. يفضل استخدام بطاقة ذاكرة ذات فئة أعىل من. 4 31
- 2 لوحة املفاتيح والفأرة : تحتاج الرازبريي باي للوحة املفاتيح والفأرة لتتحكم بنظام التشغيل كأي حاسوب بالرغم من أن بعض املشاريع لن تحتاج إىل لوحة املفاتيح والفأرة إال أنك ستحتاجها يف أول تشغيل لك للرازبريي باي. - 4 الشاشة : ال بد من توافر الشاشة حتى تتمكن من تثبيت النظام ألول مرة وعرض سطح املكتب مع ذلك فإنه ميكننا اإلستغناء عن الشاشة يف بعض األحيان وذلك من خالل وسائل أخرى كالتحكم عن بعد ( سنتطرق لها يف الصفحات القادمة (. كام أن الرازبريي باي قادرة عىل العرض بدقة 1080 وذلك من خالل كابل HDMI التي تتوافر يف األجهزة الحديثة و إذا كانت الشاشة التي تستخدمها ال تدعم ميزة HDMI فستحتاج إىل وصلة التحويل من HDMI إىل. VGA -6 وصلة : HDMI - VGA الشاشات التي ال تحتوي عىل منفذ HDMI غالبا هي الشاشات القدمية عندها نحتاج إىل وصلة محول من HDMI إىل. VGA 32
- 3 مصدر للطاقة : يتم تزويد الرازبريي باي بالطاقة الالزمة للتشغيل من أي شاحن للهواتف النقالة ذات مخرج MicroUSB ويجب أن يكون الشاحن قادرا عىل توفري فرق جهد كهربايئ بقيمة 5 فولت وشدة تيار 1000 مليل أمبري أو أكرث وذلك حتى تعمل بالشكل الصحيح وبدون أي مشاكل خاصة عند توصيل منافذ USB ألنها تقوم بسحب كمية من الطاقة كام ميكنك إستخدام بنك الطاقة power( )bank كمصدر طاقة محمول. - 5 كابل : HDMI ميكنك توصيل كابل HDMI من الرازبريي باي إىل الشاشة مبارشة حيث أن الشاشات الحديثة تتوافر بها منافذ ل. HDMI - 7 كابل الشبكة )إختياري( : يستخدم كابل الشبكة لربط الرازبريي باي بالشبكة املحلية وشبكة اإلنرتنت. - 8 وصلة شبكة wifi )إختياري( : تستخدم لالتصال بشبكة اإلنرتنت السلكيا مع مالحظة أنه يجب التحقق من توافقها مع نظام لينكس. 33
تثبيت نظام التشغيل ميكن للرازبريي باي أن تؤدي العديد من املهام مثل أي حاسوب محمول أو مكتبي رغم أنها بحجم الكف لكنها ال متلك قوة معالج كبرية لتسمح لها بتشغيل األنظمة الثقيلة أو الكبرية. هناك أنظمة تشغيل مخصصة ميكن توافقها مع الرازبريي باي مثل الرازبيان )Raspbian( والذي يعترب أحد توزيعات لينكس. سنتعرف عىل نظام لينكس يف الصفحات القادمة. الخطوات الالزمة لتثبيت نظام التشغيل عىل الرازبريي باي: تحميل نظام التشغيل الخطوة األوىل لتشغيل الرازبريي باي هي تحميل أحد أنظمة التشغيل املبنية عىل لينكس. وميكن تحميل نظام التشغيل من املوقع الرسمي للرازبريي باي 1 https//www.raspberrypi.org/downloads حيث ستجد العديد من أنظمة التشغيل التي ميكنك تحميلها بخيارين إما عن طريق التحميل عىل صورة ملف مضغوط أو تحميلها كتورنت ويف هذا الكتاب سنستخدم نظام الرازبيان.)Raspbian( 34
تثبيت نظام التشغيل 2 فك ضغط امللف بعد االنتهاء من تحميل النظام عليك أن تفك ضغط امللف بأحد برامج فك الضغط لتجد ملف نظام التشغيل باسم raspbian-wheezy.img والذي سيتم تثبيته عىل بطاقة الذاكرة. يف نظام التشغيل ويندوز )Windows( لفك ضغط امللف قم بتحميل برنامج )Winrar( بعدها قم بالنقر عىل الزر األمين من الفأرة عىل امللف املضغوط الذي تم تحميله واخرت استخراج هنا.)extract here( يف نظام التشغيل لينكس )Linux( لفك ضغط امللف قم بتحميل برنامج )file-roller( بعدها قم بالنقر عىل الزر األمين من الفأرة عىل امللف املضغوط الذي تم تحميله واخرت استخراج هنا.)extract here( يف نظام التشغيل ماك )Mac( لفك ضغط امللف قم بتحميل برنامج )Winzip( بعدها قم بالنقر عىل الزر األمين من الفأرة عىل امللف املضغوط الذي تم تحميله واخرت.)Unzip( 35
تثبيت نظام التشغيل 3 مسح و تهيئة بطاقة الذاكرة Card( )SD قم بتوصيل بطاقة الذاكرة بالحاسوب إما عن طريق املدخل املوجود بالحاسوب مبارشة ويوجد هذا املدخل يف أغلب األجهزة الحديثة ويف حال عدم توافره نقوم بتوصيلها عن طريق قارئ البطاقات انتظر حتى يتم تحميل بطاقة الذاكرة. يف نظام التشغيل ويندوز )Windows( ستظهر أيقونة يف My Computer تحمل أحد الحروف األبجدية.بعد توصيل بطاقة الذاكرة سنقوم بعمل مسح وتهئية )format( للبطاقة وذلك بالضغط بالزر األمين عىل األيقونة املوجودة ثم تختار Format وتأكد أن تختار FAT32 من ملف النظام file system ثم اضغط. Start يف نظام التشغيل لينكس )Linux( إذا كنت تستخدم نظام التشغيل لينكس بديال عن ويندوز ملسح وتهيئة بطاقة الذاكرة ميكنك تنصيب برنامج.GParted بعد تنصيب الربنامج قم بفتحه ثم قم باختيار الذاكرة التي تريد تهيئتها وتأكد أن تختار FAT32 من خالل النقر بالزر األمين واختيار to( )Format بعدها قم بعمل التهيئة. 36
يف نظام التشغيل ماك )Mac( لنظام التشغيل ماك قم بتحميل برنامج SD Formatter من خالل الرابط أدناه: https://www.sdcard.org/downloads/formatter_4/eula_mac قم بتثبيت الربنامج بعد ذلك افتح الربنامج وستظهر لك واجهة الربنامج. أوال اخرت مكان بطاقة SD يف الخيار األول Card(.)Select ثم اخرت Format( )Overwrite يف خانة نوع التهيئة Format( Select.)Option اكتب اسام للبطاقة. اضغط عىل زر التهيئة.)Format( 37
تثبيت نظام التشغيل 4 تثبيت نظام التشغيل عىل بطاقة الذاكرة يف نظام التشغيل ويندوز :)windows( بعد االنتهاء من تهيئة بطاقة الذاكرة سنقوم بنقل نظام التشغيل عليها وذلك من خالل برنامج: (Win32 Disk Image Writer) والذي ميكن تحميله من الرابط التايل: http://sourceforge.net/projects/win32diskimager بعد تحميل الربنامج وتنصيبه يف الحاسوب نقوم بفتح الربنامج ثم نختار ملف نظام التشغيل الذي يحمل امتداد ).img( من خالل الضغط عىل امللف األزرق الظاهر يف الصورة بعدها نقوم باختيار الذاكرة التي سوف يتم نقل امللف إليها وأخريا نقوم بالنقر عىل كلمة.)Write( يف نظام التشغيل لينكس )Linux( : من املمكن نقل نظام التشغيل عن طريق برنامج Creator(.)Startup Disk بعد تحميل الربنامج وتنصيبه يف الحاسوب نقوم بفتح الربنامج ثم نختار امللف الذي نريد نقله يف الذاكرة من خالل الضغط عىل كلمة )Other( كام هو ظاهر يف الصورة أما بالنسبة الختيار الذاكرة فإنه يتعرف عىل الذاكرة املدخلة يف الحاسوب تلقائيا وأخريا نقوم بالنقر عىل كلمة Startup( Make 38
يف نظام التشغيل ماك )Mac( : قم بتحميل برنامج التثبيت Raspberry-PI-SD-Installer-OS-X من الرابط أدناه: https://github.com/rayviljoen/raspberry-pi-sd-installer-os-x/ archive/master.zip قم باستخراج امللفات من امللف املحمل )املضغوط( وسيظهر املجلد Raspberry-PI-SD-Installer-OS-X-master انقل ملف نظام التشغيل الذي يحمل امتداد ).img( - والذي تم تحميله سابقا- إىل املجلد: Raspberry-PI-SD-Installer-OS-X-master 39
افتح برنامج سطر األوامر )Terminal( واكتب األمر التايل: cd Raspberry-PI-SD-Installer-OS-X-master قم بإدخال بطاقة الذاكرة SD يف الكمبيوتر. اكتب األمر التايل يف سطر األوامر :)Terminal( sudo./install Occidentalis_v02.img مالحظة: استبدل )Occidentalis_v02.img( باسم ملف نظام التشغيل. اكتب رقم منفذ بطاقة الذاكرة SD كام هو موضح بالصورة أدناه: سوف يقوم النظام بنسخ ملفات نظام التشغيل إىل بطاقة الذاكرة.SD 40
41
3 ûj»ل ÉH ÒHRGôdG 42
العناوين: خطوات تشغيل الرازبريي باي نظام التشغيل يف الرازبريي باي نظام الرازبيان )Raspbian( نظام التشغيل جنو/لينكس )GNU/Linux( قصة ظهور جنو/لينكس (GNU/Linux( مميزات نظام التشغيل جنو/لينكس مكونات نظام تشغيل جنو/لينكس التطبيقات املرفقة بنظام رازبيان برنامج سطر األوامر )Terminal( سطر األوامر Line( )Command الوصول لسطر األوامر األمر sudo املستودعات تحديث املستودعات تنزيل الربامج إزالة الربامج 43
تشغيل الرازبريي باي بعد االنتهاء من نقل نظام التشغيل عىل بطاقة الذاكرة نقوم بتجميع وتركيب كافة امللحقات الالزمة لتشغيل الرازبريي باي. تجميع وتركيب امللحقات الخطوات الالزمة للبدء يف تشغيل الرازبريي باي: تركيب بطاقة الذاكرة يف املكان املخصص لها يف لوحة الرازبريي باي. توصيل مصدر الطاقة مبنفذ. MicroUSB توصيل لوحة املفاتيح والفأرة توصيل كابل HDMI يف لوحة الرازبريي باي ثم توصيل جانبه اآلخر بالشاشة. توصيل مصدر الطاقة بالكهرباء. عند االنتهاء من الخطوات السابقة ستالحظ أن النظام بدأ بالتثبيت وأن التثبيت سيستغرق بعض الوقت. وعندما ينتهي من تثبيت النظام ألول مرة ستظهر لك نافذة ضبط اإلعدادات كام يف الصورة. 44
Boot Options اخرت الخيار : ثم اخرت الخيار : Autologin Desktop ثم نقوم بالضغط عىل كلمة )Finish( بعدها سيتم إعادة تشغيل الرازبريي باي واإلنتقال إىل سطح املكتب أو الواجهة األساسية لنظام الرازبيان. 45
يف حالة عدم ظهور سطح املكتب وانتقال النظام إىل سطر األوامر )الشاشة السوداء( اكتب األمر التايل عىل سطر األوامر: startx توضيح للخيارت املوجودة يف الصورة : )يتم استخدامها عند الحاجة إليها فقط( Expand Filesystem هذا الخيار يسمح باستخدام مساحة بطاقة الذاكرة بالكامل حيث تكون متاحة لنظام التشغيل. Change User Password ميكنك تغري كلمة املرور للمستخدم االفرتايض )pi( حيث أن كلمة املرور االفرتاضية هي) raspberry (. 1 2 46
Boot Option / Scratch 3 هذا الخيار يسمح لك بتغيري ما سيحدث عند تشغيل الرازبريي باي لعدة خيارات من ضمنها تشغيل سطر األوامر أو تشغيل برنامج سكراتش مع مالحظة أن الوضع االفرتايض عند تشغيل الرازبريي باي هو الذهاب لسطح املكتب. Internationalisation Options 5 بهذا الخيار ميكنك تغيري اللغة و التوقيت املحيل وتغيري لوحة املفاتيح Enable Camera 6 هذا الخيار مخصص يف حالة استخدامك للكامريا الخاصة بالرازبريي باي ويف حالة تفعيلك لهذا الخيار فإنه سيخصص 128MB من الذاكرة العشوائية ملعالج الرسومات. Add to Rastrack 7 كنوع من التسلية هذا الخيار سيضيفك إىل خريطة تحتوي عىل جميع مستخدمي الرازبريي باي بالعامل وللقيام بذلك يتطلب اتصالك باالنرتنت. كذلك ميكنك إضافة نفسك من خالل املوقع http://rastrack.co.uk : Overclock 8 خيار التحكم يف رسعة املعالج ومن خالل هذا الخيار ميكنك رفع رسعة املعالج الخاص بالرازبريي باي.ولكن يجب مالحظة أنه عند زيادة رسعة املعالج قد يؤدي إىل عدم استقرار النظام وقد يؤدي إىل تلف الرازبريي باي. : Advanced Options إعدادات متقدمة تحتوي عىل عدد من الخيارات كام يف الصورة 9 47
: Overscan يف الشاشات العريضة أو شاشات HD يف الغالب ستجد أن بعض أجزاء النصوص واألشياء املعروضة قد تذهب إىل جوانب الشاشة وال تظهر بصورة صحيحة هذا الخيار يحل هذه املشكلة إن وجدت. : Hostname يسمح لك هذا الخيار بكتابة اسم لجهاز الرازبريي باي. :Memory Split يسمح لك بتغيري مساحة الذاكرة املتاحة ملعالج الرسومات. : SSH هذا الخيار يقوم بتشغيل خاصية Secure Shell Server التي تسمح لك بالوصول والتحكم بجهازك عن بعد والتي سوف نتطرق بالحديث عنها يف الصفحات القادمة. : SPI هذا الخيار يسمح لك بتشغيل أو تعطيل التحميل التلقايئ ل.SPI : Audio التحكم مبخرج الصوت سواء كان من سامعة 3.5mm jack أو من HDMI : Update لتحديث صفحة إعدادات الرازبريي باي Raspi-config آلخر إصدار. :About raspi-config معلومات عن صفحة إعدادات الرازبريي باي. raspi-config 0 48
نظام التشغيل يف الرازبريي باي نظام الرازبيان )Raspbian( هو أحد األنظمة املدعومة للرازبريي باي ولقد ذكرنا سابقا ما مييز هذا النظام عن غريه وأنه النظام الشائع لالستخدام يف لوحة الرازبريي باي. النظام جزء مصغر من اللينكس. نظام التشغيل جنو/لينكس )GNU/Linux( تعمل لوحة الرازبريي باي بنظام التشغيل جنو/لينكس )GNU/Linux( أو يطلق عليه لينكس )Linux( فقط وهو نظام تشغيل مجاين ومفتوح املصدر مام يعني أنه ميكنك استخدامه وتوزيعه وتعديله ونرشه بعد التعديل حيث أن لك الحرية يف الترصف به كام تشاء. قصة ظهور جنو/لينكس )GNU/Linux( تعود فكرة الربمجيات الحرة لعام 1980 م عندما مل يتمكن ريتشارد ستاملن Stallman( )Richard وزمالءه من الوصول إىل الشفرة املصدرية لتعريف الطابعة الجديدة يف العمل. ويف عام 1983 م أسس ريتشارد ستاملن أول مؤسسة معنية بالربمجيات الحرة أطلق عليها مرشوع جنو. GNU وظهر بعد ذلك لينوس تورفالدر Torvalds( )Linus والذي كان يدرس بجامعة هلسينيك يف فنلندا ليقدم نواة مفتوحة املصدر بعدها دمجت الربمجيات الحرة لريتشارد ستاملن جنو )GNU( مع نواة لينوس ليظهر لنا نظام التشغيل جنو/ لينكس).)GNU/Linux ريتشارد ستاملن لينوس 49
مميزات نظام التشغيل جنو/لينكس - مجاين ومفتوح املصدر. - نظام آمن وموثوق به حيث أنه ال داعي للقلق من الفريوسات. - تحديثات رسيعة لكل الثغرات بفضل جهود املطورين من جميع أنحاء العامل. - وجود إصدارات تناسب كل األجهزة. مكونات نظام تشغيل جنو/لينكس تتكون كل توزيعات نظام تشغيل جنو/لينكس من أربع مكونات أساسية وهي: النواة )Kernel( : الجزء الرئييس يف نظام التشغيل فهي تعترب الوسيط بني العتاد )Hardware( املوجود عىل الكمبيوتر و بني نظام لينكس ككل. الصدفة )shell( : برنامج ملخاطبة النواة باستخدام سطر األوامر أي أنها تأخذ األوامر من املستخدم ليتم تنفيذها يف النواة وتعترب الصدفة كحامية للنواة من أي أوامر قد ترض النظام. 50
الواجهة الرسومية )GUI( : عبارة عن واجهة بديلة لسطر األوامر توفر صور وأيقونات تسهل للمستخدم التعامل معها ما مييز أنظمة تشغيل جنو/لينكس هو تنوع الواجهات املستخدمة للنظام مبا يتناسب مع جهازك. واجهة نظام رازبيان املستخدم يف هذا الكتاب هي LXDE التي تتميز بالخفة والرسعة. التطبيقات )applications( : الربامج املوجودة بنظام التشغيل مثل األلعاب وبرامج تحرير النصوص وغريها. برامج Application الواجهة الرسومية GUI الصدفة shell النواة Kernel 51
التطبيقات املرفقة بنظام رازبيان قامئة األدوات الربمجية :)Programming( Scratch لغة برمجية سهلة سنستخدم اإلصدار الثاين منها يف الصفحات القادمة. أداة لتحويل الربمجة إىل نغمة موسيقية. بيئة برمجية خاصة لألطفال لعمل الرسومات و األلعاب تعمل بخاصية السحب واإلفالت. Wolfram لغة برمجة متعددة النامذج تستخدم للحوسبة متوفرة مجانا للرازبريي باي. python 2 & python 3 Sonic Pi Mathematica لغة برمجية تستخدم للحوسبة متوفرة مجانا للرازبريي باي. 52
قامئة اإلنرتنت :)Internet( Pi Store متجر خاص للرازبريي باي ميكنك من خالله تحميل التطبيقات واأللعاب. Raspberry pi Resources مرجع إلكرتوين يحتوي عىل دروس للرزابريي باي. Web Browser متصفح لإلنرتنت. 53
قامئة األلعاب :)Games( M inecraft Pi نسخة مجانية من لعبة ماين كرافت وهذه هي اللعبة الوحيدة التي لديها واجهة برمجية مام يعني أنه ميكنك التحكم بها بلغة البايثون وأن تتفاعل مع العامل الحقيقي من خالل. GPIO Python Games بعض األلعاب املفتوحة املصدر املربمجة بلغة البايثون ميكنك اللعب بها أو حتى تعديلها. قامئة امللحقات :)Accessories( File Manager مدير امللفات والذي تستطيع من خالله تصفح امللفات املختلفة. Task Manager مدير الربامج يستعمل لتصفح الربامج التي تكون قيد التشغيل داخل النظام وميكنك إيقافها أو إعادة تشغيلها. Terminal برنامج سطر األوامر أو الطرفية والذي يستعمل للدخول عىل صدفة لينكس.)Shell( Image Viewer متصفح الصور. PDF Viewer برنامج لقراءة ملفات pdf Text Editor محرر النصوص. 54
55
قامئة املساعدة )Help( : Debian Reference مرجع إلكرتوين يرشح نظام لينكس دبيان )Debian(. Raspberry Pi Help املساعدة من املوقع الرسمي للرازبريي باي. 56
قامئة التفضيالت :)Preferences( Audio Jack Control للتحكم بالصوت. Keyboard & Mouse Setting s للتحكم يف أداة الفأرة و لوحة املفاتيح. Monitor Setting s إعدادات شاشة العرض والتحكم يف جودة وأبعاد الواجهة الرسومية. WiFi Configuration لضبط إعدادات الشبكة الالسلكية. 57
برنامج سطر األوامر )Terminal( سطر األوامر Line( )Command هو برنامج حاسويب يقرأ األوامر التي يدخلها املستخدم ويفرسها يف سياق نظام التشغيل أو لغة برمجية معينة. ويحمل العديد من املميزات منها رسعة تنفيذ األوامر والتحكم يف أدق تفاصيل النظام وتشغيل الربامج املختلفة وتثبيت الربامج أو مسحها و تصفح امللفات وإدارتها. مالحظة: يف هذا الكتاب,العبارات التي تكت ب داخل املربعات هي األوامر التي يجب أن تكت ب يف سطر األوامر. الوصول لسطر األوامر ميكن الوصول لسطر األوامر من خالل القامئة الرئيسية ثم الدخول لقامئة )Accessories( حيث ي عرف يف هذه القامئة باسم )Terminal( سوف نستخدم سطر األوامر كثريا. 58
األمر sudo حساب املستخدم االفرتايض يف رازبيان هو pi وهو حساب له صالحيات تحكم محدودة يف مكونات النظام لدواعي أمنية مثل عدم انتشار الفريوسات. وقد يضطر املستخدم لتعديل بعض محتويات النظام لذا وجدت األداة أو األمر sudo وهي التي تسمح للمستخدم العادي أن يكون لديه صالحيات املستخدم الخارق. super user املستودعات املستودعات عبارة عن سريفرات عمالقة تحتوي عىل قاعدة عمالقة من الربامج املختلفة املتوفرة ألنظمة التشغيل لينكس والتي ميكن للمستخدم من خاللها تحميل الربامج وتحديثها. وليك يتمكن املستخدم من اإلتصال باملستودع وتحميل وتحديث أي برنامج يجب عليه استخدام األداة )apt-get( ويحتاج هذا األمر إىل اإلتصال باإلنرتنت. تحديث املستودعات أول ما يجب أن تفعله عند تنصيبك لنظام رازبيان هو تحديث الربامج املوجودة يف النظام. افتح سطر األوامر Terminal واكتب األمر التايل )يحتاج هذا األمر إىل اإلتصال باإلنرتنت( : sudo apt-get update 59
وهذا يعني أن األداة )apt-get( تتصل باملستودعات لعمل تحديث للنظام والبيانات والحزم بنفس اإلصدار. تحديث الربامج لإلصدار األحدث يتم عن طريق هذا األمر )يحتاج هذا األمر إىل اإلتصال باإلنرتنت( : sudo apt-get upgrade مالحظة: يجب أن تكون الرازبريي باي متصلة بشبكة اإلنرتنت لتنزيل الربامج وتحديث املستودعات. تنزيل الربامج لتنزيل أي برنامج عن طريق سطر األوامر األمر التايل: sudo apt-get install (program name) مثال عىل ذلك : sudo apt-get install gparted 60
بعد االنتهاء من كتابة األمر قم بالنقر عىل زر )Enter( ثم ستظهر رسالة تأكيد بتحميل الربنامج قم بالنقر عىل )y( للموافقة أو )n( للمامنعة. إزالة الربامج لحذف أي برنامج عن طريق سطر األوامر نقوم بذلك عن طريق األمر التايل: sudo apt-get remove gparted بعد االنتهاء من كتابة األمر قم بالنقر عىل زر )Enter( ثم ستظهر رسالة تأكيد بحذف الربنامج قم بالنقر عىل )y( للموافقة أو )n( للمامنعة. 61
سلسلة أوامر لينكس أوامر لينكس )1( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )ls( يقوم هذا األمر بعرض محتويات املجلد الحايل. وي ست خدم أيضا لعرض محتويات مجلد معني من خالل كتابة اسم املجلد بعد األمر )ls( كام يف األمرالتايل: ls /dev
4 ºµëàdG ÉH ÒHRGôdÉH ó H øy 64
العناوين: التحكم بالرازبريي باي من جهاز آخر التحكم بسطر األوامر عن بعد باستخدام SSH عرض سطح املكتب والتحكم عرب VNC Protocol 65
التحكم بالرازبريي باي من جهاز آخر التحكم بسطر األوامر عن بعد باستخدام : SSH ))SSH(( هذه الكلمة اختصار ملفهوم Secure Shell ومعناها الصدفة اآلمنة وهو عبارة عن خدمة متكنك من التحكم عن بعد بني األجهزة املتصلة بالشبكة ويستخدم لنقل امللفات وعمل اتصاالت بني األجهزة بصورة آمنة ومشفرة. خطوات التحكم بسطر األوامر عن بعد باستخدام SSH 1 تفعيل SSH يف الرازبريي باي وذلك من خالل اآليت فتح سطر األوامر )Terminal( وكتابة األمر التايل: sudo raspi-config اخرت Options( )Advanced من الخيارات الظاهرة يف قامئة إعدادات الرازبريي باي. ادخل عىل SSH اخرت تفعيل Enable النقر عىل كلمة Finish بعدها اخرت.OK 66
2 معرفة عنوان الشبكة ( address ) IP الخاص بالرازبريي باي وذلك من خالل اآليت: فتح سطر األوامر )Terminal( وكتابة األمر التايل: ifconfig ستجد عنوان الشبكة بعد كلمتي inet addr كام هو موضح بالصورة 67
(192.168.1.116) التحكم بسطر األوامر من خالل الحاسوب: يف نظام ويندوز )windows( : 3 نحتاج إىل برنامج العميل client لتحميله يف نظام ويندوز وسنستخدم برنامج PuTTY لذلك ميكنك تحميله مجانا من الرابط التايل: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe عندما تفتح الربنامج ستجد عدة خانات كل منها يختلف عن اآلخر سنقوم بتغيري اإلعدادات متاما كام هو موضح يف الصورة سنختار SSH من الخيارات املوجودة يف type( )Connection بعدها نكتب عنوان الشبكة الخاص بالرازبريي باي يف خانة Name( )Host ويف خانة Port نكتب. 22 68
اضغط عىل زر open ليبدأ االتصال وستظهر لك نافذه تطلب منك إدخال اسم املستخدم و رقم املرور الخاصة بالرازبريي باي مع مالحظة أن اسم املستخدم اإلفرتايض هو )pi( وكلمة املرور اإلفرتاضية هي )raspberry( ويف حالة تغيري كلمة املرور الخاصة بالرازبريي باي استعمل كلمة املرور التي وضعتها. نافذة لك ستظهر بعدها الخاصة األوامر سطر بالرازبريي باي وبعد ظهور هذه النافذة ميكنك التحكم بالرازبريي باي عن بعد وذلك من خالل الحاسوب الخاص بك 69
3 التحكم بسطر األوامر من خالل الحاسوب: يف نظام لينكس )Linux( أو ماك :)MAC( إذا كنت أحد مستخدمي نظام لينكس أو ماك ميكنك اإلتصال بالرازبريي باي والتحكم بسطر األوامر الخاص بها عن طريق الدخول عىل سطر األوامر املوجود عىل نظام الحاسوب الخاص بك. افتح سطر األوامر )Terminal( واكتب األمر التايل: ssh pi@ip_adress مثال عىل ذلك : ssh pi@192.168.1.116 عرض سطح املكتب والتحكم عرب : VNC Protocol VNC Protocol هو عبارة عن نظام للوصول إىل األجهزة والتحكم بها عن بعد وميكنك من مشاهدة سطح املكتب وكلمة )VNC( هي اختصار ملفهوم Virtual Network Computing 70
خطوات عرض سطح املكتب والتحكم عرب Protocol: VNC تنصيب برنامج tightvncserver يف الرازبريي باي من خالل كتابة األمر التايل يف سطر األوامر: sudo apt-get install tightvncserver فتح الربنامج من خالل كتابة األمر التايل يف سطر األوامر: vncserver :1 عند تشغيلك للربنامج يف املرة األوىل سيطلب منك إدخال كلمة مرور ثم تأكيد لكلمة املرور التي أدخلتها وعليك أن تقوم بحفظها يف مكان خارجي حتى تتمكن من إدخالها عندما يتطلب ذلك يف الخطوات القادمة. تنصيب برنامج TightVNC يف نظام الحاسوب ويندوز )windows( من خالل الرابط التايل: http://www.tightvnc.com/download.php قم بتشغيل برنامج TightVNC وستظهر لك شاشة الدخول كام يف الصورة التالية حيث ستقوم بإدخال عنوان شبكة الرازبريي باي متبوعا بالرقم 1: بعد النقطتني مع مالحظة أن طريقة إيجاد عنوان الشبكة قد تم التطرق إليها يف الصفحات السابقة. 71
النقر عىل كلمة اتصال )Connect( ستظهر لك نافذة جديدة إلدخال كلمة املرور الخاصة بربنامج vnc التي أدخلتها عند تثبيت برنامج vnc يف الرازبريي باي و النقر عىل كلمة موافق.)OK( بعد االنتهاء من الخطوات السابقة ستالحظ ظهور سطح املكتب للرازبريي باي عىل الحاسوب الخاص بك كام يف الصورة التالية: 72
سلسلة أوامر لينكس أوامر لينكس )2( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )cd( يسمح هذا األمر باإلنتقال إىل مجلد معني. وي ست خدم من خالل كتابة اسم املجلد املطلوب بعد األمر )cd( كام يف األمرالتايل: cd /etc 73
توجد بعض اإلختصارات ملجلدات معينة وهي: املجلد الحايل. املجلد السابق )املجلد األب(.. مجلد املستخدم ~ ) root (املجلد العام / للوصول إىل مجلد املستخدم...اكتب األمر التايل: cd ~ 74
75 Hello
5 ƒãjéñdg 76
العناوين: لغات الربمجة مقدمة عن البايثون سبب التسمية الربنامج املستخدم أساسيات لغة البايثون طرق العمل عىل مفرس بايثون العمليات األساسية يف لغة البايثون الكتابة - print التعليقات - comments العمليات الحسابية Calculations- املتغريات - variables نوع املتغري الجملة الرشطية if الجملة الرشطية if-else جملة التكرار while القامئة - list جملة التكرار for 77
لغات الربمجة: اللغات الربمجية التي تدعمها الرازبريي باي هي كل اللغات التي يدعمها نظام لينكس مثل : البايثون باسكال جافا وغريها من اللغات األخرى. سنقوم باستعامل لغة البايثون )python( يف هذا الكتاب لربمجة منافذ التحكم GPIO وذلك للمميزات التي تتوفر يف هذه اللغة عن غريها من اللغات األخرى والتي سوف نقوم برسدها عند التعريف بلغة البايثون. 78
البايثون لغات من لغة هي البايثون الربمجة ذات املستوى العايل اللغة هذه تتميز واملتقدم. الكتابة حيث من بالبساطة والقراءة سهلة التعلم ومفتوحة املصدر وهو ما جعلها قابلة للتطوير. ميكن استخدام البايثون ملراحل متعددة من الربمجة وذلك من البسيطة الربامج برمجة خالل إنجاز إىل ووصوال للمبتدئني لغة كأي الضخمة املشاريع برمجية أخرى. ملاذا اخرتنا البايثون لربمجة منافذ التحكم بسبب املميزات التي متتلكها هذه اللغة عن غريها من اللغات. ولعل أهم ما مييزها هو سهولة تعلم هذه اللغة وأنها لغة حرة مفتوحة املصدر. 79
مميزاتها مفتوحة املصدر: ميكنك بحرية قراءة الشفرة املصدرية والتعديل فيها. سهلة التعلم: بسبب البساطة يف كتابة وقراءة هذه اللغة. عملية: تعمل عىل جميع أنظمة التشغيل وإصداراتها املختلفة. املكتبات الربمجية: تتوفر عدد كبري من املكتبات الربمجية التي تدعمها هذه اللغة. الدعم: مدعومة من قبل مجتمع الربمجة يف شبكة اإلنرتنت العاملية بشكل كبري. :GPIO تدعم برمجة منافذ التحكم يف لوحة الرازبريي باي. سبب التسمية األصيل بايثون معنى يرجع إىل األفعى الضخمة ولعل هذا ليس هو السبب وراء تسمية لغة البايثون بهذا االسم وإمنا اللغة هذه مؤسس إعجاب بفرقة رزوم" "فان الربمجية عىل تطلق كانت مرسحية نفسها اسم مونتي بايثون فأطلق عليها اسم بايثون نسبة لهذه الفرقة املرسحية. 80
الربنامج املستخدم الربنامج املستخدم هو مفرس بايثون التفاعيل Python IDLE وهنالك إصداران لهذا الربنامج هام اإلصدار الثاين وله عدد من التحديثات وآخر تحديثات هذا اإلصدار Python 2.7.9 أما اإلصدار اآلخر فهو الثالث وله كذلك عدد من التحديثات آخرها Python, 3.4.3 علام بأن هذه اإلصدارات يف تحديث مستمر. سنقوم باستخدام اإلصدار الثاين يف هذا الكتاب وذلك ألنه بعد تعلم اإلصدار الثاين من هذه اللغة ميكنك االنتقال بسهولة لإلصدار الثالث. زيادة عىل ذلك فإن املبتدئ يف هذه اللغة بحاجة إىل دعم وهذا ما سيوفره املجتمع الربمجي له إذا ما بدأ باإلصدار الثاين. أساسيات لغة البايثون بعد أن تطرقنا بالحديث عن مفرس بايثون التفاعيل وإصدارته واإلصدار الذي سوف نقوم بالعمل والتعامل معه يف هذا الكتاب أال وهو اإلصدار الثاين سنقوم باستعراض بعض أساسيات اللغة قبل الدخول يف برمجة منافذ التحكم. مالحظة: يف هذا الكتاب,العبارات التي تكت ب داخل املربعات مقطوعة الزاويتني هي كود بايثون الربمجي. 81
طرق العمل عىل مفرس بايثون من املمكن العمل عىل الربنامج نفسه أو من خالل سطر األوامر أو حتى كتابة الكود الربمجي يف ملف نيص وفتحه الحقا يف الربنامج وفيام ييل توضيح لكل الطرق التي ذكرناها : الطريقة األوىل: مفرس بايثون: نقوم بفتح مفرس بايثون من قامئة الربمجة مع رضورة التأكد أنه اإلصدار الثاين وليس الثالث. الطريقة الثانية: سطر األوامر: من خالل كتابة األمر التايل يف سطر األوامر: python بعدها ستظهر لك الشاشة كام هو موضح يف الصورة التالية: 82
الطريقة الثالثة: ملف نيص بامتداد :).py( من خالل فتح محرر النصوص Editor( )Text املوجود يف قامئة امللحقات وبعدها كتابة الكود وحفظه بامتداد ).py( يف املسار التايل /home/pi/ ولتشغيل الربنامج ما عليك إال فتح سطر األوامر )Terminal( وكتابة كلمة )python( متبوعة باسم امللف مع االمتداد. python (File_Name).py مثال عىل ذلك: python Name.py 83
العمليات األساسية يف لغة البايثون: الكتابة :)print( للقيام بأمر الكتابة يف لغة البايثون وعرضه عىل الشاشة ما عليك إال القيام بكتابة كلمة )print( متبوعة بالنص املراد إظهاره عىل الشاشة ويكون بني عالمات التنصيص والضغط عىل )Enter( print "text" مثال عىل ذلك: print "Hello Raspberry Pi" ميكن القيام بأمر الكتابة باستخدام الطريقة السابقة ولكن بعالمة تنصيص واحدة وتكمن الفائدة من خالل هذه الطريقة بإضافة عالمتي التنصيص بداخل الكالم املراد طباعته عىل الشاشة. مثال عىل ذلك: print 'Hello "Raspberry" Pi' 84
التعليقات :)comments( تستخدم التعليقات يف كافة أنواع الربمجة بشكل عام وهي مفيدة للغاية ألنه من خاللها يتم رشح الكود الربمجي املقابل لها باللغة املتعارف عليها لدى الناس كام أنه يتم تجاهلها من قبل املرتجم.)compiler( وللقيام بتعليق معني يف الربنامج الخاص بك ما عليك إال وضع عالمة املربع )#( يليها التعليق الذي تريده. مثال عىل ذلك: قم بإنشاء ملف command.py من خالل كتابة األمر التايل يف سطر األوامر: nano command.py # Show the following text on screen print "Hello Raspberry Pi" قم بتشغيل ملف command.py من خالل كتابة األمر التايل: python command.py 85
ومن املمكن االستفادة من عملية تجاهل املرتجم للتعليقات بإبطال سطر معني من الشيفرة )code( لتعديل معني أو مؤقت يف الربنامج بشكل عام. # Show the following text # on screen print "Hello" # print "Hello World" print "Raspberry Pi" العمليات الحسابية :Calculations ميتاز البايثون بقدرته عىل القيام بالعمليات الحسابية مثل:الجمع والطرح والرضب والقسمة بدون تعريف مسبق للمتغريات. وميكن القيام بذلك من خالل األمر التايل: Number*Number مثال عىل ذلك: 5*5 86
كام ميكن الربط بني عملية الطباعة والعمليات الحسابية مثال عىل ذلك: print "The result of addition 5+5 is ", 10 املتغريات )variables( Var=Value املتغري عبارة عن تحديد اسم أو عنوان للتخزين يف الذاكرة وقد يحتوي عىل قيمة معلومة أو مجهولة وهو قابل للتعديل من قبل الربنامج نفسه بالطريقة التي متت برمجته عليها. ويتم تعريف املتغريات من خالل كتابة اسم املتغري متبوعا بقيمته بينهام إشارة يساوي ويتم ذلك من خالل األمر التايل: مثال عىل ذلك: x=5 87
كام ميكن القيام بالعمليات الحسابية عىل املتغريات التي تم تحديد قيمتها يف الربنامج أو إدخال قيمة معينة عىل املتغري. مثال عىل ذلك: Raspberry = 50 pi = 50 print " Raspberry + Pi =", Raspberry + pi print "Raspberry - Pi =", Raspberry - pi نوع املتغري يتم تحديد نوع املتغري عن طريق القيمة املدخلة يف ذلك املتغري. وملعرفة نوع املتغري نقوم بكتابة كلمة type متبوعة باملتغري بني قوسني. type(var_name) مثال عىل ذلك: type(x) 88
الجملة الرشطية statement) if (if in condition is true condition conditional code in condition is false if expression : statement(s) تعترب الجمل الرشطية من أهم ركائز الربمجة ألن الربنامج الذي تقوم بكتابته سيستمر بدون توقف بنفس املعطيات حيث أنها لن تتغري يف حال عدم استخدامها. وتستخدم الجمل الرشطية الختيار الخيار املناسب بني حالتني عىل حسب رغبة املربمج أو التأكد من قيمة معينة للمتغري يف الربنامج أو التأكد من قيمة أدخلها املستخدم عىل املتغري كالتأكد من كلمة الرس التي وضعها املربمج عىل الربنامج. ويكون بناء الجملة الرشطية )if( كالتايل: pi=50 raspberry =50 if pi == raspberry: print "Hello Raspberry" مع األخذ بعني اإلعتبار وضع مسافة )tab( للعبارات statement(s( املراد تحقيقها عند تحقق الرشط. مثال عىل ذلك: 89
الجملة الرشطية statement) if-else (if-else if expression : statement(s) else: statement(s) هي املكملة للجملة الرشطية ) if ( ففي حالة أن الرشط كان صحيحا فسيتم القيام باألمر الذي ييل )if( أما إذا كان الرشط غري صحيح فسيتم القيام باألمر الذي ييل.)else( ويكون بناء الجملة الرشطية )else-if( كالتايل: مع األخذ بعني اإلعتبار وضع مسافة )tab( للعبارات statement(s( املراد تحقيقها عند تحقق الرشط وكذلك العبارات املرتبطة ب.)else( in condition is false condition in condition is true conditional code مثال عىل ذلك: pi=60 raspberry =60 if pi == raspberry: print "Hello Raspberry pi" else: print "Hello" 90
while expression: statement (s) condition in condition is true جملة التكرار (while loop) while تستخدم جملة التكرار while إلعادة وتكرار أمر معني يف الربنامج وذلك عىل حسب رشط يتم وضعه من قبل املربمج ويف حال عدم تحقق ذلك الرشط عندها فإن التكرار يتوقف. ويكون بناء جملة التكرار )while( كالتايل: conditional code in condition is false while expression : statement(s) مع األخذ بعني اإلعتبار وضع مسافة )tab( للعبارات statement(s( املراد تكرارها عند تحقق الرشط. مثال عىل ذلك: count=1 while (count<10) : print "The number of letters of raspberry", count count= count + 1 91
القامئة )list( list_num=[ 1, 2, 3, 4, 5 ] list_lett=[ "R", "a", "s", "p", "b", "e","r","r","y"] list_mix=[1, 2, "a", "b"] عبارة عن قامئة تحتوي عىل عدد من القيم ويتم تحديد القيمة بعالمة التنصيص وبني كل قيمة فاصلة وتكون جميع القيم ما بني قوسني معقوفني. يوجد يف لغة الربمجة Python ستة أنواع من املتتاليات املدمجة ولكن أكرثها شيوعا هي القوائم وأهم ما مييز القامئة أن القيم ليست بالرضورة أن تكون من النوع نفسه. وميكن طباعة العنارص التي بداخل القامئة وإظهارها عىل الشاشة عن طريق اختيار املكان املحفوظ لذلك العنرص الذي ترغب بطباعته. ويكون ترتيب العنارص داخل القامئة كالتايل: list_lett=[ "R","a", "s", "p", "b", "e", "r","r","y" ] 0 1 2 3 4 5 6 7 8 مثال عىل طباعة عنرص معني داخل القامئة: list_num=[ 1, 2, 3, 4, 5 ] list_lett=[ "R", "a", "s", "p", "b", "e","r","r","y"] list_mix=[1, 2, "a", "b"] print " List_Num in position 2 is ", list_num[2] print " list_lett in position 0 is ", list_lett [0] print " list_mix in position 3 is ", list_mix [3] 92
item from sequence execute statement(s) for iterating_var in sequence: statement If no more item in sequence Next item from sequence جملة التكرارfor (for loop) تستخدم جملة التكرار for لتنفيذ أمر معني يف الربنامج أكرث من مرة وتكمن هذه امليزة يف تقليل طول الربنامج واختصاره بأكرب قدر ممكن وذلك يؤدي لسهولة مراجعة الربنامج وقراءته. ويكون بناء جملة التكرار for كالتايل: for iterating_var in sequence: statement(s) عبارة عن متغري يحتوي عىل عدد من الكلامت أو الحروف أو األرقام تعرف بقامئة )list( عبارة عن متغري يتم تغيري قيمته يف كل مرة من القامئة )list( sequence iterating_var مع األخذ بعني اإلعتبار وضع مسافة )tab( للعبارات statement(s( املراد تكرارها عند تحقق الرشط. List_Lett=[ "R", "a", "s", "p", "b", "e","r","r","y"] مثال عىل ذلك: for letter in list_ Lett: print "letters of raspberry pi", letter 93
سلسلة أوامر لينكس أوامر لينكس )3( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )echo( يقوم هذا األمر بالطباعة عىل الشاشة أو ملف. وي ست خدم من خالل كتابة السطر املراد طباعته بعد األمر )echo( كام يف األمرالتايل: echo "Welcome to Raspberry Pi World" 94
وميكن كذلك طباعة السطر عىل ملف وذلك من خالل األمر التايل: echo "Welcome to Raspberry Pi World" >> file1.txt أو echo "Welcome to Raspberry Pi World" > file1.txt اكتشف الفرق بينهام اكتب األمر التايل )ماذا تالحظ( : cat file1.txt 95
96
97 Just do it!
6 á ôh ÉH ÒHRGôdG 98
العناوين: منافذ التحكم توضيح ملنافذ التحكم برمجة منافذ التحكم GPIO ترقيم منافذ التحكم سلسلة التجارب العملية التجربة )1(: تشغيل وإطفاء الدايود الضويئ. التجربة )2(: تشغيل وإطفاء الدايود الضويئ مع إظهار رسالة عىل الشاشة. التجربة )3(: تشغيل الدايود الضويئ مبفتاح الضغط. التجربة )4(: تشغيل الدايود الضويئ مبفتاح وإيقافه مبفتاح آخر. التجربة )5(: إشارات املرور. التجربة )6(: إنذار الطوارئ. التجربة )7(: تشغيل الدايود الضويئ بحساس الضوء. التجربة )8(: حساس الحركة. التجربة )9(: تشغيل املحرك الكهربايئ. التجربة )10(: تغيري اتجاه دوران املحرك الكهربايئ. التجربة )11(: التحكم بشدة إضاءة الدايود الضويئ. التجربة )12(: التحكم برسعة املحرك الكهربايئ. التجربة )13(: خزان املاء. التجربة )14(: البوابة. التجربة )15(: تشغيل محرك السريفو.)servo( التجربة )16(: تشغيل املحرك ستيرب motor(.)stepper التجربة )17(: حساس املوجات فوق الصوتية )قياس املسافة(. 99
األدوات التي ستحتاجها لتنفيذ تجارب هذا الكتاب 3 لوحة التجارب )breadboard( أسالك توصيل )wire jumpers( 2 1 الرازبريي باي pi( )raspberry 9 حساس الضوء )LDR( حساس الحركة )PIR Motion Sensor( 8 7 طنان )buzzer( 15 مستقبل اإلشارة receiver( )IR 14 دايود مرسل transmitter( )IR 21 20 19 جي يب أس مودم )GPS modem( مودم SIM900 كابل )FTDI (Serial to TTL cable 26 25 كامريا عالية الدقة للرازبريي باي )PI Camera Module( كامريا ويب webcam( )USB
6 مفتاح الضغط button( )push 5 دايود ضويئ )LED( مقاومات )470 أوم 1 كيلو أوم 10 كيلو أوم( 4 13 12 11 10 محرك motor( )DC ترانزستور )NPN( متحكمة )L293D( بطاريات )1.5V( 18 محرك السريفو )servo( محرك ستيرب motor( )stepper حساس املوجات فوق الصوتية )ultrasonic sensor( 17 16 24 MCP3008 حساس الضغط الجوي BMP085 حساس الحرارة )LM35( 23 22 29 سامعة وميكروفون مودم السليك )USB 3G Modem( 28 )Speaker & Microphone( 27 شاشة اللمس LCD( )RPI
منافذ التحكم منافذ التحكم )General Perpose Input/Output -GPIO( هي املنافذ املوجودة عىل جهاز الرازبريي باي والتي يصل عددها يف اإلصدار األخري إىل 40 منفذا والتي ميكن استخدامها كمخارج )outputs( أو مداخل )inputs( أو كمنافذ تقوم بإمداد الطاقة بخرج معني أو بروتوكوالت االتصال التي تربط بني األجهزة اإللكرتونية بأنواعها املختلفة. 102
توضيح ملنافذ التحكم منافذ اإلدخال واإلخراج منافذ الطاقة بروتوكوالت االتصاالت التفاصيل املتعلقة مبنافذ التحكم والطاقة سيتم التوغل فيها أكرث يف فصل األمثلة العملية التي تربط بني املنافذ واللغة املستخدمة لربمجتها أما بالنسبة لربوتوكوالت االتصال فسيتم التطرق إليها يف أحد فصول الكتاب الالحقة. 103
تنصيب مكتبة التحكم اإللكرتوين. عبارة عن تحديث مللفات نظام الرازبريي باي. برمجة منافذ التحكم GPIO لربمجة منافذ التحكم املوجودة عىل لوحة الرازبريي باي البد من تنصيب مكتبة خاصة تسمى مكتبة التحكم اإللكرتوين وللقيام بذلك ما عليك إال فتح سطر األوامر )Terminal( وكتابة األمر التايل: sudo apt-get update sudo apt-get install -y python-dev python-rpi.gpio مالحظة: )y-( تدل عىل املوافقة عىل تنصيب املكتبة من قبل املستخدم. 104
ترقيم منافذ التحكم هناك نوعان من الرتقيم يف لوحة الرازبريي باي الرتقيم األول يكون تبعا لنظام اللوحة نفسها ويسمى ترقيم البورد) BOARD ( والثاين يكون ترقيام داخليا طبقا لرشيحة )BCM( ويسمى ترقيم )BCM( والصورة التالية توضح االختالف بني الرتقيمني األول والثاين. ترقيم BOARD هو الرتقيم املوضح يف الدوائر. ترقيم BCM هو الرتقيم املوضح يف املربعات الزرقاء. لضبط منافذ التحكم بنظام )BOARD( نقوم باسترياد املكتبة املسؤولة عن تهيئة منافذ التحكم من خالل كود بايثون عىل النحو التايل: GPIO.setmode(GPIO.BOARD) لضبط منافذ التحكم بنظام )BCM( نقوم باسترياد املكتبة املسؤولة عن تهيئة منافذ التحكم من خالل كود بايثون عىل النحو التايل: GPIO.setmode(GPIO.BCM) 105
التجربة األوىل تشغيل وإطفاء الدايود الضويئ الهدف من التجربة: تشغيل وإطفاء الدايود الضويئ. توصيل مكونات التجربة: 2 وضع الدايود الضويئ عىل لوحة التجارب ثم توصيل املقاومة عىل التوايل مع الدايود الضويئ من طرفه السالب 1 الرتقيم املستخدم يف هذه التجربة هو ترقيم )BCM( والذي تطرقنا له سابقا يف أنواع الرتقيم املستخدم يف لوحة الرازبريي باي والذي سنتبعه يف جميع التجارب. 106
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود ضويئ - مقاومة 470 أوم. شاهد التجربة 4 ومن الطرف اآلخر للمقاومة نقوم بتوصيله بسلك للمنفذ رقم )6( الذي ميثل الطرف السالب. ومن الطرف املوجب للدايود الضويئ نقوم بتوصيله بسلك للمنفذ رقم )16( ]GPIO23[ الذي ميثل اإلشارة املرسلة من اللوحة والطرف املوجب. 3? بعد االنتهاء من املرحلة األوىل للتجربة وهي تجميع وتوصيل املكونات ننتقل للمرحلة التالية من التجربة وهي كتابة الكود الربمجي الذي سيتحكم بالقطع املوجودة يف التجربة. 107
كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:استدعاء مكتبة الوقت السطر الثاين: استدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )23( كمخرج السطر الخامس: عملية التكرار من نوع )while( السطر السادس: إطفاء املنفذ رقم )23( السطر السابع: انتظار ملدة ثانية واحدة السطر الثامن: تشغيل املنفذ رقم )23( السطر التاسع: انتظار ملدة ثانية واحدة import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) while True: GPIO.output(23,0) time.sleep(1) GPIO.output(23,1) time.sleep(1) sudo python file_name.py # ميكن كتابة الكود الربمجي بإحدى الطرق املذكورة مسبقا سنقوم بكتابة الكود يف هذه التجربة عن طريق محرر النصوص )leafpad( وحفظه يف املسار /home/pi/ بامتداد ).py( ثم تشغيله باألمر التايل يف سطر األوامر: # إليقاف الربنامج )C Ctrl (..اضغط + عىل املفتاحني Ctrl و C. # يجب مراعاة الحروف الصغرية والكبرية عند الكتابة. # الستدعاء املكتبة املطلوبة لربمجة منافذ التحكم يف لوحة الراسبريي باي نقوم بكتابة كلمة import يليها اسم املكتبة كاأليت: اسم املكتبة import 108
# لضبط الرتقيم املطلوب ملنافذ التحكم نقوم بكتابة االيت: (نوع الرتقيم. GPIO.setmode(GPIO # الختيار املنفذ كمدخل أو مخرج نقوم بكتابة اآليت: GPIO.setup املنفذ),رقم GPIO.OUT) املنفذ) GPIO.setup,رقم GPIO.IN) # للقيام بعملية االنتظار بعد عملية معينة نقوم بكتابة اآليت: time.sleep(1) مع مالحظة أن الرقم املوجود بني القوسني يكون )بالثانية( # عملية التكرار من نوع )while( تكون كاآليت: while True: statement statement مع مالحظة وجود مسافة )tab( يف بداية كل سطر داخل عملية التكرار والذي يدل عىل أن هذه األوامر تكون داخل عملية التكرار. 109
التجربة الثانية تشغيل وإطفاء الدايود الضويئ مع إظهار رسالة عىل الشاشة الهدف من التجربة: تشغيل وإطفاء الدايود الضويئ مع إظهار رسالة تدل عىل حالة الدايود الضويئ سواء كان يف حالة التشغيل أو اإلطفاء. توصيل مكونات التجربة: 2 وضع الدايود الضويئ عىل لوحة التجارب ثم توصيل املقاومة عىل التوايل مع الدايود الضويئ من طرفه السالب 1 # إلظهار رسالة عىل الشاشة نقوم باستخدام األمر print متبوعا بالنص املراد إظهاره عىل الشاشة مع رضورة إغالق النص بعالمتي التنصيص: " النص " print 110
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل دايود ضويئ - مقاومة 470 أوم. شاهد التجربة 4 ومن الطرف اآلخر للمقاومة نقوم بتوصيل سلك للمنفذ رقم )6( الذي ميثل الطرف السالب. ومن الطرف املوجب للدايود الضويئ نقوم بتوصيل سلك للمنفذ رقم )16( ]GPIO23[ الذي ميثل اإلشارة املرسلة من اللوحة والطرف املوجب. 3 كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر 1 :استدعاء مكتبة الوقت السطر 2: استدعاء مكتبة التحكم اإللكرتوين السطر 3 : ضبط الرتقيم عىل نوع )BCM( السطر 4: ضبط املنفذ رقم )23( كمخرج السطر 5 : عملية التكرار من نوع )while( السطر 6 : إطفاء املنفذ رقم )23( السطر 7 : طباعة OFF" "!!!LED السطر 8: إنتظار ملدة ثانية واحدة السطر 9: تشغيل املنفذ رقم )23( السطر 10 : طباعة ON" "!!!LED السطر 11: إنتظار ملدة ثانية واحدة import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) while True: GPIO.output(23,0) print "LED OFF!!!" time.sleep(1) GPIO.output(23,1) print "LED ON!!!" time.sleep(1) 111
التجربة الثالثة تشغيل الدايود الضويئ مبفتاح الضغط الهدف من التجربة: تشغيل الدايود الضويئ عند الضغط عىل املفتاح. توصيل مكونات التجربة: وضع الدايود الضويئ عىل لوحة التجارب نقوم بوضع مفتاح الضغط عىل لوحة التجارب وتوصيله باملوجب من طرف 2 1 # جميع أسطر الربمجة السابقة تم رشحها يف املثال السابق ما عدا أداة الرشط )if( إذا )else( ما عدا. # تستخدم هذه األداة للتحقق من صالحية الرشط يف عملية التكرار. 112
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود ضويئ - مقاومة 470 أوم - مقاومة 10 كيلو أوم - مفتاح ضغط. شاهد التجربة 4 ومن الطرف اآلخر نقوم بتوصيل مقاومة )10 كيلو أوم( عىل التوايل ومن نفس النقطة نقوم بإخراج سلك إىل املنفذ رقم )36( ]GPIO16[ الذي ميثل مدخل للمفتاح بعدها نوصل طرف املقاومة اآلخر بالسالب. رشح الكود الربمجي 3 كتابة الكود الربمجي: الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )23( كمخرج السطر الخامس: ضبط املنفذ رقم )16( كمدخل السطر السادس: عملية التكرار من نوع )while( السطر السابع: املقارنة )if( إذا تم الضغط عىل املفتاح السطر الثامن: تشغيل املنفذ رقم )23( السطر التاسع: املقارنة )else( غري ذلك السطر العارش: إطفاء املنفذ رقم )23( import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(16,GPIO.IN) while True: if(gpio.input(16)==true): GPIO.output(23,1) else: GPIO.output(23,0) ): الرشط) if األمر األول else: األمر الثاين # ويتم كتابة هذا األداة يف البايثون بالصورة اآلتية: 113
التجربة الرابعة تشغيل الدايود الضويئ مبفتاح وإيقافه مبفتاح آخر الهدف من التجربة: تشغيل الدايود الضويئ عند الضغط عىل املفتاح األول وإيقافه عند الضغط عىل املفتاح الثاين توصيل مكونات التجربة: جميع التوصيالت يف هذه التجربة متاما كالتجربة السابقة والتي قبلها قمنا بإضافة مفتاح آخر للدائرة وكذلك يوجد اختالف يف املنافذ التي تعمل كمدخل للمفتاح. 114
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود ضويئ - مقاومة 470 أوم - مقاومة 10 كيلو أوم )2( - مفتاح ضغط )2(. شاهد التجربة كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )23( كمخرج السطر الخامس: ضبط املنفذ رقم )16( كمدخل السطر السادس: ضبط املنفذ رقم )20( كمدخل السطر السابع: عملية التكرار من نوع )while( السطر الثامن: املقارنة )if( إذا تم الضغط عىل املفتاح األول السطر التاسع:تشغيل املنفذ رقم )23( السطر العارش: املقارنة )if( إذا تم الضغط عىل املفتاح الثاين السطر الحادي عرش: إطفاء املنفذ رقم )23( import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(16,GPIO.IN) GPIO.setup(20,GPIO.IN) while True: if (GPIO.input(16)==True): GPIO.output(23,1) if (GPIO.input(20)==True): GPIO.output(23,0) 115
التجربة الخامسة إشارات املرور الهدف من التجربة: تشغيل الدايود الضويئ األحمر ثم األصفر ثم األخرض. توصيل مكونات التجربة: جميع التوصيالت يف هذه التجربة متاما كالتجربة األوىل للدايود الضويئ فقط يتم إضافة عدد )2( دايود وتوصيلهام بالطريقة نفسها. 116
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل دايود ضويئ )3( - مقاومة 470 أوم )3(. كتابة الكود الربمجي: شاهد التجربة الكود الربمجي رشح الكود الربمجي السطر ) 1 (:إستدعاء مكتبة الوقت السطر )2(: إستدعاء مكتبة التحكم اإللكرتوين السطر )3(: ضبط الرتقيم عىل نوع )BCM( السطر )4(: ضبط املنفذ رقم )23( كمخرج السطر) 5 (: ضبط املنفذ رقم )7( كمخرج السطر )6(: ضبط املنفذ رقم )8( كمخرج السطر )7( عملية التكرار من نوع )while( السطر )8(: تشغيل املنفذ )23( السطر ) 9 (:إطفاء املنفذ رقم )7( السطر )10(: إطفاء املنفذ رقم )21( السطر )11(: إنتظار ملدة 8 ثواين السطر )12(: إطفاء املنفذ رقم )23( السطر )13(: تشغيل املنفذ )7( السطر )14(: إطفاء املنفذ رقم )21( السطر )15(: إنتظار ملدة ثانيتني السطر )16(: إطفاء املنفذ رقم )23( السطر )17(: إطفاء املنفذ رقم )7( السطر )18(: تشغيل املنفذ )21( السطر )19(: إنتظار ملدة 8 ثواين السطر )20(: إطفاء املنفذ )23( السطر )21(: تشغيل املنفذ رقم )7( السطر) 22 (: إطفاء املنفذ رقم )21( السطر) 23 (: إنتظار ملدة ثانيتني import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(7,GPIO.OUT) GPIO.setup(21,GPIO.OUT) while True: GPIO.output(23,1) GPIO.output(7,0) GPIO.output(21,0) time.sleep(8) GPIO.output(23,0) GPIO.output(7,1) GPIO.output(21,0) time.sleep(2) GPIO.output(23,0) GPIO.output(7,0) GPIO.output(21,1) time.sleep(8) GPIO.output(23,0) GPIO.output(7,1) GPIO.output(21,0) time.sleep(2) 117
التجربة السادسة إنذار الطوارئ الهدف من التجربة: تشغيل الدايود الضويئ والطنان عند الضغط عىل املفتاح. توصيل مكونات التجربة: 2 ١ نقوم بتوصيل الطرف السالب من الطنان باملنفذ السالب و الطرف املوجب باملنفذ الذي سنقوم باستخدامه كمخرج يف هذه التجربة. املفتاح والدايود الضويئ نقوم بتوصيلهام كام يف التجارب السابقة. 118
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل مفتاح الضغط - دايود ضويئ - مقاومة 470 أوم- مقاومة 10 كيلو أوم- طنان )buzzer(. شاهد التجربة كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر ) 1 (:إستدعاء مكتبة الوقت السطر )2(: إستدعاء مكتبة التحكم اإللكرتوين السطر )3(: ضبط الرتقيم عىل نوع )BCM( السطر )4(: ضبط املنفذ رقم )23( كمخرج السطر) 5 (: ضبط املنفذ رقم )16( كمخرج السطر )6(: ضبط املنفذ رقم )20( كمدخل import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(16,GPIO.OUT) GPIO.setup(20,GPIO.IN) السطر )7( عملية التكرار من نوع )while( السطر )8(: املقارنة )if( إذا تم الضغط عىل املفتاح السطر ) 9 (:تشغيل املنفذ رقم )23( السطر )10(: تشغيل املنفذ رقم )16( السطر )11(: املقارنة )else( غري ذلك السطر ) 12 (:إطفاء املنفذ رقم )23( السطر )13(: إطفاء املنفذ رقم )16( while True: if (GPIO.input(20)==True): GPIO.output(23,1) GPIO.output(16,1) else: GPIO.output(23,0) GPIO.output(16,0) 119
التجربة السابعة تشغيل الدايود الضويئ بحساس الضوء الهدف من التجربة: تشغيل الدايود الضويئ عن طريق حساس الضوء. توصيل مكونات التجربة: جميع التوصيالت يف هذه التجربة متاما كالتجربة السابقة مع استبدال مفتاح الضغط بحساس الضوء. 120
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود ضويئ - مقاومة 470 أوم- مقاومة 10 كيلو أوم - حساس ضوء.)LDR( شاهد التجربة كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )23( كمخرج السطر الخامس: ضبط املنفذ رقم )16( كمدخل السطر السادس: عملية التكرار من نوع )while( السطر السابع: املقارنة )if( إذا كانت اإلضاءة قوية السطر الثامن: تشغيل املنفذ رقم )23( السطر التاسع: املقارنة )else( غري ذلك السطر العارش: إطفاء املنفذ رقم )23( import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(16,GPIO.IN) while True: if (GPIO.input(16)==True): GPIO.output(23,1) else: GPIO.output(23,0) # الكود الربمجي مشابه متاما لكود للتجربة السابقة ألن كال من مفتاح الضغط وحساس الضوء عبارة عن مفتاح إدخال. # حساس الضوء يف هذه التجربة ليس متاثليا وإمنا هو عبارة عن إشارة رقمية إما أن تكون يف حالة تشغيل أو إيقاف كمفتاح الضغط. 121
التجربة الثامنة حساس الحركة الهدف من التجربة: تشغيل الدايود الضويئ عندما يكتشف حساس الحركة أي يش مير من أمامه. )PIR Motion Sensor( توصيل مكونات التجربة: 2 نقوم بتوصيل الدايود الضويئ متاما كام قمنا بتوصيله يف التجربة األوىل. نقوم بتوصيل الطرف املوجب من حساس الحركة مع املنفذ املوجب )5v( وتوصيل الطرف السالب منه مع املنفذ السالب يف اللوحة ١ 122
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود ضويئ مقاومة 470 أوم- حساس الحركة Sensor(.)PIR Motion شاهد التجربة 3 توصيل املنفذ األوسط منه مع املنفذ رقم )36( ]GPIO16[ الذي يعرب عن املدخل يف هذه التجربة. كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )23( كمخرج السطر الخامس: ضبط املنفذ رقم )16( كمدخل السطر السادس: عملية التكرار من نوع )while( السطر السابع: املقارنة )if( إذا تم رصد حركة السطر الثامن: تشغيل املنفذ رقم )23( السطر التاسع: طباعة "تم رصد الحركة" السطر العارش: املقارنة )else( غري ذلك السطر الحادي عرش: إطفاء املنفذ رقم )23( السطر الثاين عرش: طباعة "مل يتم رصد الحركة" import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(16,GPIO.IN) while True: if (GPIO.input(16)==True): GPIO.output(23,1) print "Motion Detected" else: GPIO.output(23,0) print "NO Motion Detected" 123
التجربة التاسعة :تشغيل املحرك الكهربايئ الهدف من التجربة: تشغيل املحرك الكهربايئ motor(.)dc )DC motor( توصيل مكونات التجربة: توصيل جانب من املحرك والجزء املوجب من الدايود بالقطب املوجب للبطارية. ثم توصيل الجانب اآلخر من املحرك مع الرتانزيستور )املجمع] C [( 2 ١ # جميع أسطر الربمجة تم رشحها يف التجربة األوىل وقد تكون مشابهة لها متاما وإمنا االختالف يف هذه التجربة هو استخدام منفذ آخر كمخرج للمحرك الكهربايئ وزيادة عدد ثواين االنتظار. # استخدمنا الرتانزيستور يف هذه التجربة لتزويد املحرك بالطاقة بصورة آمنة وتجنب إلحاق الرضر بلوحة الراسبريي باي. # استخدمنا الدايود بسبب استخدام املحرك والذي بدوره ينتج مجال مغناطييس يؤدي عند انقطاعه إىل فرق يف الجهد قد ينتج عنه تيار عكيس غري مرغوب فيه فيعمل الدايود عىل إيقافه. 124
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل دايود - )NPN( مقاومة 1 كيلو أوم - ترانزيستور )1N4148( محرك motor(.)dc شاهد التجربة 4 نقوم بتوصيل طرف املقاومة 1 كيلو أوم يف الرتانزيستور )القاعدة] B [( والطرف اآلخر مع املنفذ رقم )22( ]GPIO25[ والذي يعرب عن املخرج يف هذه التجربة كتابة الكود الربمجي: الكود الربمجي توصيل الرتانزيستور )الباعث] E [( باملنفذ السالب. رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )25( كمخرج السطر الخامس: عملية التكرار من نوع )while( السطر السادس: تشغيل املنفذ رقم )25( السطر السابع: انتظار ملدة خمس ثواين السطر الثامن: إطفاء املنفذ رقم )25( السطر التاسع: انتظار ملدة ثالث ثواين 3 import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.OUT) while True: GPIO.output(25,1) time.sleep(5) GPIO.output(25,0) time.sleep(3) 125 #عند توصيل املحرك مبارشة يف اللوحة يجب توصيله بالطريقة السابقة وإال سيؤدي إىل تلف اللوحة حتى وإن كان محرك واحد فقط. # عند استخدام أكرث من محرك ال ميكن توصيله باللوحة مبارشة ألنها غري قادرة عىل توفري طاقة كافية لجميع املحركات وإذا تم توصيل أكرث من محرك فقد يؤدي إىل تلف لوحة الراسبريي باي ولحل ذلك نستخدم مصدر طاقة خارجي للمحركات.
التجربة العارشة الهدف من التجربة: تغيري اتجاه املحرك الكهربايئ.)DC motor( تغيري اتجاه دوران املحرك الكهربايئ motor( )DC توصيل مكونات التجربة: يتم توصيل املحرك مع املتحكمة بالصورة التالية: قمنا بتخصيص املنافذ )21,20,16( يف هذه التجربة للمحرك األول وتخصيص املنافذ )13,6,5( للمحرك الثاين. ١ املنفذ األخري يف كل محرك سيكون مفتاح تشغيل وإيقاف. # لتغيري اتجاه املحرك )األمام- الخلف( البد من استخدام متحكمة )L293D( وهي قادرة عىل تشغيل محركني كحد أقىص. توصيل املحرك اآلخر بنفس طريقة األول ولكن هذه املرة باستخدام 3 منافذ أخرى مختلفة عن التي استخدمناها يف األول. 126
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - متحكمة.)1.5v( بطاريات 4 - )DC motor( محرك 2 - )L293D( شاهد التجربة مخطط التجربة 127
كتابة الكود الربمجي: الكود الربمجي A B import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) Motor1A=16 Motor1B=20 Motor1E=21 Motor2A=5 Motor2B=6 Motor2E=13 GPIO.setup(Motor1A, GPIO.OUT) GPIO.setup(Motor1B, GPIO.OUT) GPIO.setup(Motor1E, GPIO.OUT) GPIO.setup(Motor2A, GPIO.OUT) GPIO.setup(Motor2B, GPIO.OUT) GPIO.setup(Motor2E, GPIO.OUT) GPIO.output(Motor1E,GPIO.HIGH) GPIO.output(Motor2A,GPIO.HIGH) GPIO.output(Motor2B,GPIO.LOW) GPIO.output(Motor2E,GPIO.HIGH) print "Waiting for 3 seconds" time.sleep(3) print "Motor Backward" GPIO.output(Motor1A,GPIO.LOW) GPIO.output(Motor1B,GPIO.HIGH) GPIO.output(Motor1E,GPIO.HIGH) GPIO.output(Motor2A,GPIO.LOW) GPIO.output(Motor2B,GPIO.HIGH) GPIO.output(Motor2E,GPIO.HIGH) print "Waiting for 1 seconds" time.sleep(1) print "Motor stop" Print "Motor Forward" GPIO.output(Motor1A,GPIO.HIGH) GPIO.output(Motor1E,GPIO.LOW) GPIO.output(Motor2E,GPIO.LOW) GPIO.output(Motor1B,GPIO.LOW) 128
129
التجربة الحادي عرش التحكم بشدة إضاءة الدايود الضويئ الهدف من التجربة: التحكم بشدة إضاءة الدايود الضويئ. توصيل مكونات التجربة: ١ نقوم بتوصيل الدايود الضويئ متاما كام قمنا بتوصيله يف التجربة األوىل. # للتحكم يف شدة إضاءة الدايود الضويئ البد من استخدام التعديل عىل عرض النبضة )PWM( والذي يقوم بإرسال قيم متاثلية أي قيم مختلفة من فرق الجهد عىل خالف ما قمنا به يف التجارب السابقة فقد استخدمنا إشارات رقمية إما أن تكون يف وضع التشغيل )3.3V( أو يف وضع اإليقاف )5V(. 130
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل- دايود ضويئ - مقاومة 470 أوم. شاهد التجربة كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر ) 1 (:إستدعاء مكتبة الوقت السطر )2(: إستدعاء مكتبة التحكم اإللكرتوين السطر )3(: ضبط الرتقيم عىل نوع )BCM( السطر )4(: ضبط املنفذ رقم )23( كمخرج السطر )5(: ضبط املنفذ رقم )23( كنبضة السطر )6(: بداية الدايود الضويئ بقدرة 5% السطر )7(: تغيري قدرة الدايود الضويئ إىل 20% السطر )8(: إنتظار ملدة ثانيتني السطر )9(: تغيري قدرة الدايود الضويئ إىل 40% السطر )10(: إنتظار ملدة ثانيتني السطر )11(: تغيري قدرة الدايود الضويئ إىل 60% السطر )12(: إنتظار ملدة ثانيتني السطر )13(: تغيري قدرة الدايود الضويئ إىل 80% السطر )14(: إنتظار ملدة ثانيتني السطر )15(: تغيري قدرة الدايود الضويئ إىل 100% السطر )16(: إنتظار ملدة ثانيتني السطر )17(: إيقاف الدايود الضويئ السطر )18(: إيقاف جميع املنافذ import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) Led=GPIO.PWM(23,50) Led.start(5) Led.ChangeDutyCycle(20) time.sleep(2) Led.ChangeDutyCycle (40) time.sleep(2) Led.ChangeDutyCycle (60) time.sleep(2) Led.ChangeDutyCycle (80) time.sleep(2) Led.ChangeDutyCycle (100) time.sleep(2) Led.stop() GPIO.cleanup() 131
التجربة الثاين عرش التحكم برسعة املحرك الكهربايئ الهدف من التجربة: تشغيل املحرك الكهربايئ motor(.)dc توصيل مكونات التجربة: توصيل الدائرة متاما كام قمنا بتوصيلها يف التجربة التاسعة. # للتحكم يف رسعة املحرك الكهربايئ نقوم بإستخدام معدل النبضات الذي تم رشحه سابقا يف التجربة السابقة. ١ 132
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود )NPN( - مقاومة 1 كيلو أوم - ترانزيستور )1N4148( محرك motor(.)dc شاهد التجربة كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر ) 1 (:إستدعاء مكتبة الوقت السطر )2(: إستدعاء مكتبة التحكم اإللكرتوين السطر )3(: ضبط الرتقيم عىل نوع )BCM( السطر )4(: ضبط املنفذ رقم )25( كمخرج السطر )5(: ضبط املنفذ رقم )25( كنبضة السطر )6(: بداية املحرك بقدرة 5% السطر )7(: تغيري قدرة املحرك إىل 20% السطر )8(: إنتظار ملدة ثانيتني السطر )9(: تغيري قدرة املحرك إىل 40% السطر )10(: إنتظار ملدة ثانيتني السطر )11(: تغيري قدرة املحرك إىل 60% السطر )12(: إنتظار ملدة ثانيتني السطر )13(: تغيري قدرة املحرك إىل 80% السطر )14(: إنتظار ملدة ثانيتني السطر )15(: تغيري قدرة املحرك إىل 100% السطر )16(: إنتظار ملدة ثانيتني السطر )17(: إيقاف املحرك السطر )18(: إيقاف جميع املنافذ import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.OUT) Motor=GPIO.PWM(25,50) Motor.start(5) Motor.ChangeDutyCycle (20) time.sleep(2) Motor.ChangeDutyCycle (40) time.sleep(2) Motor.ChangeDutyCycle (60) time.sleep(2) Motor.ChangeDutyCycle (80) time.sleep(2) Motor.ChangeDutyCycle (100) time.sleep(2) Motor.stop() GPIO.cleanup() 133
التجربة الثالث عرش كشف الترسب من خزان املاء الهدف من التجربة: إظهار رسالة عند حدوث ترسب يف خزان املاء. توصيل مكونات التجربة: 2 وضع الرتانزيستور عىل لوحة التجارب توصيل طرف الرتانزيستور )املجمع( مع الطرف املوجب وطرفه اآلخر يتم توصيله مبقاومة 10 كيلو أوم ويف نفس النقطة يتم إخراج سلك للمنفذ رقم )38( ]GPIO20[ الذي يعمل كمدخل يف هذه التجربة ١ أسفل الخزان 134
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - مقاومة 1 كيلو أوم- ترانزيستور) NPN (. شاهد التجربة 3 توصيل طرف املقاومة اآلخر باملنفذ السالب وأخريا إخراج سلك من قاعدة الرتنزيستور إىل خزان املاء. كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )20( كمخرج السطر الخامس: عملية التكرار من نوع )while( السطر السادس: املقارنة )if( السطر السابع: طباعة "هناك ترسب للمياه" السطر الثامن: املقارنة )else( غري ذلك السطر التاسع: طباعة " ليس هنالك ترسب للمياه " import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(20,GPIO.IN) while True: if (GPIO.input(20)==True): print "Water Leaking" else print "NO Water Leaking " 135
التجربة الرابع عرش الهدف من التجربة: تشغيل الدايود الضويئ عند حدوث قطع يف اإلشارة بني الدايود املرسل transmitter( )IR ومستقبل اإلشارة IR(.)receiver البوابة توصيل مكونات التجربة: توصيل الدايود الضويئ كام يف التجارب السابقة الدايود املرسل نقوم بتوصيله مثل توصيلة الدايود الضويئ العادي 2 ١ 136
مكونات التجربة: لوحة الرازبريي باي - لوحة التجارب - أسالك توصيل - دايود ضويئ - مقاومة 1 كيلو أوم- مقاومة 470 أوم )2( - دايود مرسل IR(.)receiver IR( مستقبل اإلشارة )transmitter شاهد التجربة 4 مستقبل اإلشارة النوع الذي يف الصورة- يتم توصيل طرفه األول باملنفذ رقم )12( ]GPIO18[ الذي يعترب كمدخل الطرف الثاين باملنفذ املوجب )5V( والطرف الثالث باملنفذ السالب.)GND( 3 كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )18( كمدخل السطر الخامس: ضبط املنفذ رقم )21( كمخرج السطر السادس: عملية التكرار من نوع )while( السطر السابع: املقارنة )if( السطر الثامن: تشغيل املنفذ رقم )21( السطر التاسع: املقارنة )else( غري ذلك السطر العارش: إيقاف املنفذ رقم )21( import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18,GPIO.IN) GPIO.setup(21,GPIO.OUT) while True: if (GPIO.input(18)==True): GPIO.output(21,1) else: GPIO.output(21,0) 137
التجربة الخامس عرش تشغيل محرك السريفو )servo( الهدف من التجربة: تشغيل محرك السريفو بعدة زوايا. توصيل مكونات التجربة: 2 توصيل الطرف السالب من السريفو مع املنفذ السالب والطرف املوجب منه مع املنفذ املوجب توصيل السلك األصفر يف املنفذ رقم )12( ]GPIO18[ والذي يعترب كمخرج يف هذه التجربة. ١ 138
مكونات التجربة: لوحة الرازبريي باي - محرك السريفو. مالحظة: شاهد التجربة لقد قمنا بإستخدام معدل النبضات )PWM( يف هذه التجربة. كتابة الكود الربمجي: الكود الربمجي رشح الكود الربمجي السطر األول:إستدعاء مكتبة الوقت السطر الثاين: إستدعاء مكتبة التحكم اإللكرتوين السطر الثالث: ضبط الرتقيم عىل نوع )BCM( السطر الرابع: ضبط املنفذ رقم )18( كمخرج السطر الخامس: تعريف السريفو عىل املنفذ رقم import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18,GPIO.OUT) servo=gpio.pwm(18,50) )18( وأنه معدل للنبضات السطر السادس: يبدأ السريفو بقدرة )7.5%( السطر السابع: عملية التكرار من نوع )while( السطر الثامن: قدرة السريفو )7.5%( السطر التاسع: إنتظار ملدة ثانية واحدة السطر العارش: قدرة السريفو )12.5%( السطر الحادي عرش: إنتظار ملدة ثانية واحدة السطر الثاين عرش: قدرة السريفو )2.5%( السطر الثالث عرش: إنتظار ملدة ثانية واحدة servo.start(7.5) while True: servo.changedutycycle(7.5) time.sleep(1) servo.changedutycycle(12.5) time.sleep(1) servo.changedutycycle(2.5) time.sleep(1) 139
التجربة السادس عرش تشغيل املحرك ستيرب الهدف من التجربة: تشغيل محرك الستيرب) motor.)stepper )stepper motor( توصيل مكونات التجربة: 2 توصيل الطرف السالب من متحكم الستيرب مع املنفذ السالب والطرف املوجب منه مع املنفذ املوجب. توصيل املدخل رقم 1 من متحكم الستيرب إىل املنفذ رقم )7( ]GPIO4[ واملدخل رقم 2 إىل املنفذ رقم )11( ]GPIO17[ واملدخل رقم 3 إىل املنفذ رقم )13( ]GPIO27[ واملدخل رقم 4 إىل املنفذ رقم )15( ]GPIO22[ ١ 140
مكونات التجربة: لوحة الرازبريي باي - محرك الستيرب stepper(.)stepper motor driver( متحكم الستيرب -)motor شاهد التجربة import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) ControlPin = [4,17,27,22] for pin in ControlPin: GPIO.setup(pin,GPIO.OUT) GPIO.output(pin,0) seq = [ [1,0,0,0], [1,1,0,0], [0,1,0,0], [0,1,1,0], [0,0,1,0], [0,0,1,1], [0,0,0,1], [1,0,0,1] ] for i in range(0,10): كتابة الكود الربمجي: الكود الربمجي for halfstep in range(0,7): for pin in range(0,3): z = ControlPin[pin] # z: pin number of GPIO of the stepper motor y = seq[halfstep][pin] # y: output value of each pin GPIO.output(z,y) time.sleep(0.1) 141
التجربة السابع عرش حساس املوجات فوق الصوتية )قياس املسافة( الهدف من التجربة: استخدام حساس املوجات فوق الصوتية ملعرفة املسافة من الحساس إىل الجسم الذي يكون أمامه وعرضها عىل الشاشة. توصيل مكونات التجربة: 2 توصيل الطرف السالب من الحساس مع املنفذ السالب والطرف املوجب منه مع املنفذ املوجب. توصيل Trigger من الحساس )السلك األصفر( يف املنفذ رقم )22( ]GPIO25[ وتوصيل Echo من الحساس )السلك األبيض( إىل املقاومة األوىل 680 ومنها اىل املقاومة الثانية ومنها اىل القطب السالب ١ 142
مكونات التجربة: لوحة الرازبريي باي حساس املوجات فوق الصوتية مقاومة Ω 680 مقاومة kω 1 شاهد التجربة 3 إخراج سلك من بني املقاومتني وتوصيله يف املنفذ رقم )40( ]GPIO21[ )السلك األزرق(. 143
كتابة الكود الربمجي: الكود الربمجي import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) TRIG = 25 ECHO = 21 GPIO.setup(TRIG,GPIO.OUT) GPIO.setup(ECHO,GPIO.IN) while True: print "Start Distance measurement..." GPIO.output(TRIG, False) time.sleep(2) GPIO.output(TRIG, True) time.sleep(0.00001) GPIO.output(TRIG, False) while GPIO.input(ECHO)==0: pulse_start = time.time() while GPIO.input(ECHO)==1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round(distance, 2) print "Distance: ",distance,"cm" 144
سلسلة أوامر لينكس أوامر لينكس )4( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )grep( يقوم هذا األمر بالبحث عن كلمة أو سطر يف ملف. وي ست خدم كام يف األمرالتايل: grep "Raspberry Pi" file1.txt الكلمة أو السطر املراد البحث عنه Pi" "Raspberry امللف املراد البحث فيه file1.txt grep -i "Raspberry Pi" file1.txt اكتشف نتائج األوامر التالية: grep v "Raspberry Pi" file1.txt
147
7 ä ƒcƒjhôh üj GصÉل 148
العناوين: بروتوكول UART أمثلة عملية عىل بروتوكول UART إرسال رسالة نصية تحديد املوقع الجغرايف بروتوكول I2C مثال عميل عىل بروتوكول I2C حساس الضغط الجوي )BMP085( بروتوكول SPI مثال عميل عىل بروتوكول SPI استخدام رشيحة MCP3008 لقراءة الحساسات التامثلية 149
بروتوكوالت االتصال في الرازبيري باي سنتعرف يف هذا الفصل عىل عدد من بروتوكوالت االتصال التي تدعمها لوحة الرازبريي باي والتي من خاللها سنتمكن من التحكم باللوحة عىل مستوى أعىل مام تم مناقشته يف الفصول السابقة. وفيام ييل سنتطرق إىل الحديث عن كل بروتوكول بشكل منفصل: ١ بروتوكول UART( :) بروتوكول النقل التسلسيل الغري متزامن Receiver/( Universal Asynchronous )Transmitter ويتم اختصار هذا املفهوم بكلمة )UART( يعترب من أهم وأشهر بروتوكوالت االتصال التي تستخدم يف التواصل بني املعالجات وكام تم اإلشارة يف عنوان الربوتوكول أنه غري متزامن. معلومة: العمليات الغري متزامنة ال تحتاج إىل نبضات إشارة الساعة وذلك عىل عكس األنظمة املتزامنة وشبه املتزامنة وذلك عىل عكس األنظمة املتزامنة وشبه املتزامنة. يكون التواصل يف هذا الربوتوكول بني الجهاز األول والثاين عن طريق منفذين فقط هام منفذ اإلرسال TX وهو اختصار ملفهوم )Transmit( ومنفذ االستقبال )Receive( وهو اختصار ملفهوم RX حيث يتم توصيل كل منفذ من املنافذ يف الجهازين بشكل عكيس. ويتم ضبط كال الجهازين عىل نفس التهيئة وذلك حسب مسجالت معينة طبقا لبيانات املتحكم الذي يتم التعامل معه كام أنه يجب تحديد رسعة اإلرسال والذي يعرف مبفهوم. baudrate 150
أمثلة عملية عىل بروتوكول :UART إرسال رسالة نصية: إلرسال رسالة نصية من الرازبريي باي سنحتاج لتنصيب بعض الربامج إىل جانب توفر األدوات الالزمة لذلك مثل : ١ تنصيب برنامج )screen( من خالله ميكن التعامل مع أوامر AT commands وهي عبارة عن مجموعة من األوامر التي يستخدمها الحاسب اآليل للتخاطب مع أجهزة االتصاالت الخارجية مثل GSM modem وميكن تنصيب هذا الربنامج عن طريق كتابة األمر التايل يف سطر األوامر :)Terminal( sudo apt-get install screen 151
جهاز مودم الهاتف modem( )GSM حيث توجد منه أشكال عديدة حسب الرشكة املصنعة واملواصفات. ويتم وضع بطاقة الهاتف فيه سنستخدم يف هذا الكتاب مودم: SIM900 مالحظة: يجب إزالة الرقم الرسي للبطاقة كابل cable) FTDI (Serial to TTL أسالك توصيل ) Female to Female jumbers( 152
A بعد االنتهاء من تنصيب اإلعدادات الالزمة إلرسال رسالة نصية وتوفري األدوات الالزمة كام هو موضح سابقا سنبدأ بعملية التوصيل حيث سنقوم بتوصيل أسالك كابل FTDI مع مراعاة ألوان األسالك. توصيل اللون األحمر مع املنفذ )5V( توصيل اللون األسود مع املنفذ )GND( توصيل اللون األبيض مع املنفذ )RX( توصيل اللون األخرض مع املنفذ )TX( C مع رضورة إضافة سلك من الرازبريي باي من املنفذ 5V إىل منفذ pwon املوجود يف GSM modem بعدها نقوم بربطه من الجهة األخرى بالرازبريي باي عن طريق منفذ.usb B E بعد االنتهاء من الخطوات السابقة نبدأ العمل داخل النظام من خالل معرفة رقم االتصال ملنفذ usb والذي سنحتاجه عند كتابة الكود الربمجي للتخاطب معه بشكل خاص دون املنافذ األخرى من خالل كتابة األمر التايل يف سطر األوامر :)Terminal( ls /dev/ttyusb* التأكد من ربط GSM modem بالطريقة الصحيحة وذلك من خالل األمر التايل: D sudo screen /dev/ttyusb0 115200 رشح األمر: برنامج الشاشة منفذ التعريف الذي تم استخراجه من الخطوة السابقة رسعة نقل البيانات screen /dev/ttyusb0 115200 153
مالحظة: عند استخدام أسالك التوصيل jumper( )wires لتوصيل GSM modem بالرازبريي باي سيكون منفذ التعريف ورسعة نقل البيانات مختلفا عن الخطوات السابقة. عند كتابة األمر السابق ستظهر نافذة screen حيث سنقوم بكتابة األوامر التالية للتأكد من عمل GSM modem وذلك من خالل استخدام AT commands للتأكد من صالحية العمل بشكل صحيح. AT اكتب األوامر التالية: AT+CMGF=1 AT+CMGS= +968XXXXXXXX استبدل الرمز XXXXXXXX بالرقم الذي تريد أن تراسله. البد من التأكد من كتابة فتح خط الهاتف للدولة. مثال عىل ذلك: سلطنة عامن )968+( دولة اإلمارات )971+( بعد ظهور الرمز < ستقوم بكتابة محتوى الرسالة التي تريد أن ترسلها وعند االنتهاء من ذلك قم بالضغط عىل )Ctrl+Z( والتي تعني إرسال. مالحظة: يجب إزالة الرقم الرسي للبطاقة. 154
الكود الربمجي الكامل إلرسال رسالة نصية باستخدام GSM modem الكود الربمجي A B C D E F H I J K L M N import serial import time ser = serial.serial ( /dev/ttyusb0, 115200, timeout=3) ser.write( AT\r ) response = ser.readlines(none) ser.write( AT+CMGF=1\r ) response = ser.readlines(none) ser.write( AT+CMGS= +968XXXXXXXX \r ) response = ser.readlines(none) ser.write( Hello Raspberry Pi ) ser.write(chr(26)) time.sleep(10) ser.close( ) رشح الكود الربمجي إستدعاء مكتبة االتصال التسلسيل إستدعاء مكتبة الوقت فتح منفذ التسلسل باإلعدادات املوضحة كتابة األمر املوضح يف املنفذ استجابة املنفذ باملوافقة كتابة األمر املوضح يف املنفذ استجابة املنفذ باملوافقة كتابة األمر املوضح يف املنفذ استجابة املنفذ باملوافقة كتابة األمر املوضح يف املنفذ إرسال تأخري ملدة 10 ثواين إغالق منفذ التسلسل A B C D E F H I J K L M N 155
لربط GSM modem بالرازبريي باي ( هذه العملية تتوافق مع الرازبريي باي 2 فقط( مبارشة بدون استخدام كابل FTDI نقوم بالخطوات السابقة متاما فيام عدا أنه عند تعريف املنفذ سنقوم بتغيري كلمة )USB( بكلمة )AMA( وكذلك طريقة توصيل املنافذ يف كال الطرفني كام هو موضح. مالحظة: يجب توصيل منفذ pwon للطرف املوجب سواء كان 3.3v أو 5v وذلك اللتقاط اإلشارة. املنفذ )5V( املنفذ )GND( املنفذ )UART0_RX(10 املنفذ )UART0_TX( 8 املنفذ )5V( املنفذ )GND( املنفذ )TX( املنفذ )RX( 156
كام أنه يجب تغيري بعض اإلعدادات الالزمة لتحرير املنافذ الخاصة بUART وذلك من خالل الخطوات التالية: أوال: فتح ملف سطر األوامر من خالل األمر التايل: sudo nano /boot/cmdline.txt عند فتح امللف يجب أن نقوم بحذف السطر األحمر كام ييل: dwc_otg.lpm_enable=0 console=ttyama0,115200 kgdboc=ttyama0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait ليصبح بعد ذلك : dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait بعد ذلك اضغط عىل Ctrl+X ثم y واضغظ Enter لحفظ امللف. sudo nano /etc/inittab وقم بحذف السطر التايل من امللف: #T0:23:respawn:/sbin/getty -L ttyama0 115200 vt100" بعد ذلك اضغط عىل Ctrl+X ثم y واضغظ Enter لحفظ امللف. ثم قم بإعادة تشغيل الرازبريي باي من خالل األمر التايل: sudo reboot 157
أمثلة عملية عىل بروتوكول :UART تحديد املوقع الجغرايف : لتحديد موقع معني باستخدام الرازبريي باي سنحتاج إىل األدوات السابقة التي استخدمناها يف إرسال رسالة نصية ولكن سنستخدم هذه املرة GPS modem بدال عن GSM modem كام أن أشكاله تختلف حسب املواصفات والرشكة املصنعة له. للبدء يف استخدام GPS modem سنتبع الخطوات التالية: توصيل GPS modem مع أسالك كابل FTDI مع مراعاة األلوان ك ل حسب مكانه الصحيح كام هو موضح يف الجدول وتوصيله من الجانب اآلخر مبنفذUSB يف الرازبريي باي. معرفة رقم االتصال ملنفذ USB والذي سنحتاجه عند كتابة الكود الربمجي للتخاطب معه بشكل خاص دون املنافذ األخرى من خالل األمر التايل: ls /dev/ttyusb* توصيل اللون األحمر مع املنفذ )Vcc( توصيل اللون األسود مع املنفذ )GND( توصيل اللون األبيض مع املنفذ )RX( توصيل اللون األخرض مع املنفذ )TX( تنصيب األداة املسؤولة عن جلب املعلومات من األقامر وذلك من خالل األمر التايل: sudo apt-get install gpsd gpsd-clients python-gps 158
لتوجيه املعلومات التي يتم جلبها من األقامر باملنفذ الذي يتصل به GPS modem نقوم بكتابة األمر التايل: sudo gpsd /dev/ttyusb0 -F /var/run/gpsd.sock إلظهار املعلومات التي يتم استقبالها من GPS modem نقوم بكتابة األمر التايل: cgps -s مالحظة: عند توصيل GPS modem مبارشة مع الرازبريي باي )هذه العملية تتوافق مع الرازبريي باي 2 فقط( بدون استخدام كابل FTDI يجب إعادة الخطوات السابقة التي تم ذكرها يف كيفية تغيري اإلعدادات بالنسبة لmodem GSM يف حال تركيبه بطريقة مبارشة مع رضورة تغيري كلمة )USB( بكلمة )AMA( عند تعريف املنافذ. 159
2 بروتوكول )I2C( بروتوكول اإلتصال الداخيل بني الدوائر Circuit( ) Inter-Integrated ويتم اختصار هذا املفهوم بكلمة )I2C( حيث أن هذا الربوتوكول يعمل مع توقيتات الزمن لذلك فهو متزامن وله طرفني يف التواصل هام: (SCL) Serial Clock Line طرف لتوصيل نبضات الساعة (SDA) Serial Data Line طرف لتوصيل املعلومات ويسمح هذا الربوتوكول للمتحكم باإلتصال باألجهزة وسهولة التواصل معها كام أنه ميكن التواصل مع أكرث من جهاز باستخدام سلكني ومقاومتني فقط وميكن التمييز بني هذه األجهزة عن طريق عنوان خاص لكل جهاز زيادة عىل ذلك فإن كلفته منخفضة وسهل التطبيق. للبدء يف استخدام هذا الربوتوكول يف الرازبريي باي يجب ضبط بعض اإلعدادات وذلك من خالل طريقتني: الطريقة األوىل: نقوم بفتح سطر األوامر )Terminal( وكتابة األمر التايل: sudo raspi-config 160
ستظهر نافذة إعدادات الرازبريي باي بعدها نقوم باختيار اإلعدادات املتقدمة option( )advanced. ستظهر نافذة اإلعدادات املتقدمة بعدها نقوم باختيار الخيار )I2C( والذي من خالله ميكن تشغيل وتعطيل هذا الربوتوكول. بعدها نقوم بعمل إعادة تشغيل النظام لحفظ التغيريات. الطريقة الثانية: نقوم بكتابة األمر التايل يف سطر األوامر :)Terminal( sudo nano /etc/modules 161
ستظهر النافذة التالية كام يف الصورة: نقوم بإضافة السطريني التاليني يف نهاية امللف املفتوح: i2c-bcm2708 i2c-dev نقوم بإغالق امللف عن طريق الضغط عىل Y. ثم حفظه بالضغط عىل الحرف X+Ctrl أخريا نقوم بإعادة تشغيل الرازبريي باي. 162
مثال عميل عىل بروتوكول :I2C سنقوم بحساب الضغط الجوي واإلرتفاع عن سطح البحر ودرجة الحرارة معتمدين عىل حساس الضغط الجوي )BMP085( والذي بدوره يعمل عىل بروتوكول I2C حيث سنحتاج يف هذا املثال لهذا الحساس فقط. أوال: يجب تفعيل خاصية I2C وذلك باستخدام إحدى الطرق التي تم ذكرها سابقا لطرق تفعيل هذا الربوتوكول. ثانيا: تنصيب بعض األدوات الالزمة للعمل عىل هذا الحساس من خالل األوامر التالية: sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools ثالثا: تركيب الحساس مع الرازبريي باي كام هو موضح يف الشكل. 163
رابعا: التعرف عىل عنوان الحساس املستخدم وذلك ألن لكل حساس عنوان خاص عند استخدام بروتكول I2C وذلك من خالل األمر التايل إذا كنت تستخدم اإلصدار الثاين للرازبريي باي :)raspberry pi 2( sudo i2cdetect y 1 أما إذا كنت تستخدم اإلصدار األول من الرازبريي باي فاكتب األمر التايل: sudo i2cdetect y 2 خامسا: نقوم بتنزيل املكتبة الخاصة لربمجة هذا الحساس بلغة البايثون وذلك من خالل األمر التايل: git clone https://github.com/adafruit/ Adafruit-Raspberry-Pi-Python-Code.git سادسا: نقوم بالدخول مللف مكتبة I2C عن طريق األوامر التالية: cd Adafruit-Raspberry-Pi-Python-Code cd Adafruit_I2C أخريا نقوم بتشغيل الربنامج عن طريق األمر التايل: sudo python Adafruit_BMP085_example.py 164
بروتوكول ( SPI :) بروتوكول النقل التسلسيل املتزامن Interface( )Serial Peripheral ويتم اختصار هذا املفهوم بكلمة )SPI( يستخدم هذا الربوتوكول للتواصل بني األجهزة كربوتكول I2C ولكن كل منهام له مميزاته التي متيزه عن اآلخر. يختلف هذا الربوتوكول عن بروتوكول I2C يف طريقة التعرف عىل األجهزة املتصلة والتخاطب معها حيث أنه يوجد سلك خاص يقوم بتفعيل الجهاز الذي سيتم التخاطب معه. كام أن هذا الربوتوكول من نوع Duplex( )Full وذلك يعني أنه يرسل ويستلم املعلومات يف الوقت ذاته. للبدء يف استخدام هذا الربوتوكول يف الرازبريي باي يجب ضبط بعض اإلعدادات وميكن عمل ذلك بطريقتني: ستظهر نافذة إعدادات الرازبريي باي بعدها نقوم باختيار اإلعدادات الطريقة األوىل: نقوم بفتح سطر األوامر )Terminal( وكتابة األمر التايل: sudo raspi-config املتقدمة option( )advanced. 165
ستظهر نافذة اإلعدادات املتقدمة بعدها نقوم باختيار الخيار )SPI( والذي من خالله ميكن تشغيل وتعطيل هذا الربوتوكول. بعدها نقوم بعمل إعادة تشغيل النظام لحفظ التغيريات. الطريقة الثانية نقوم بكتابة األمر التايل يف سطر األوامر: sudo nano /boot/config.txt ستظهر النافذة التالية كام يف الصورة: نقوم بإضافة هذا السطر يف نهاية امللف املفتوح: dtparam=spi=on 166
نقوم بإغالق امللف عن طريق الضغط عىل X+Ctrl ثم حفظه بالضغط عىل الحرف Y أخريا نقوم بإعادة تشغيل الرازبريي باي من خالل كتابة األمر التايل: مثال عميل عىل بروتوكول SPI توجد العديد من الرقائق والحساسات التي تدعم هذا الربوتوكول حيث سنعرض أحد أهم الرقائق املستخدمة يف التحويل من اإلشارة التامثلية إىل الرقمية وهي MCP3008 وتعترب مثال جيد ألن الرازبريي باي ال تدعم الحساسات التامثلية. للقيام بهذه التجربة سنحتاج إىل بعض القطع اإللكرتونية : مقاومة ضوئية )LDR( مقاومة 10kohm MCP3008 حساس الحرارة )LM35( أوال: نقوم بتوصيل القطع كام هو موضح بالشكل: dtparam=spi=on 167
يجب تثبيت مكتبة spidev من خالل كتابة األوامر التالية يف سطر األوامر :)Terminal( Raspberry pi 3.3V 3.3V GROUND GPIO11 (P1-23) GPIO9 (P1-21) GPIO10 (P1-19) GPIO8 (P1-24) GROUND MCP3008 VDD VREF AGND CLK DOUT DIN CS DGND sudo apt-get update sudo apt-get install python-dev python-pip sudo pip install ipython sudo modprobe spi_bcm2708 sudo pip install spidev echo spi_bcm2708 sudo tee -a /etc/modules 168
الكود الربمجي للمثال: import spidev import time import os spi = spidev.spidev() spi.open(0,0) # Function to read SPI data from MCP3008 chip # Channel must be an integer 0-7 def ReadChannel(channel): adc = spi.xfer2([1,(8+channel)<<4,0]) data = ((adc[1]&3) << 8) + adc[2] return data # Function to convert data to voltage level, # rounded to specified number of decimal places. def ConvertVolts(data,places): volts = (data * 3.3) / float(1023) volts = round(volts,places) return volts # Function to calculate temperature from # TMP36 data, rounded to specified # number of decimal places. def ConvertTemp(data,places): temp = ((data * 330)/float(1023))-50 temp = round(temp,places) return temp 169
# Define sensor channels light_channel = 0 temp_channel = 1 delay = 5 while True: # Read the light sensor data light_level = ReadChannel(light_channel) light_volts = ConvertVolts(light_level,2) # Read the temperature sensor data temp_level = ReadChannel(temp_channel) temp_volts = ConvertVolts(temp_level,2) temp = ConvertTemp(temp_level,2) # Print out results print "--------------------------------------- --" print("light: {} ({}V)".format(light_level,light_ volts)) print("temp : {} ({}V) {} deg C".format(temp_ level,temp_volts,temp)) # Wait before repeating loop time.sleep(delay) 170
سلسلة أوامر لينكس أوامر لينكس )5( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )cut( يقوم هذا األمر بتقسيم سطر ما يحتوي عىل رمز يفصل السطر إىل عدة أقسام. اسمه ملف يوجد لنفرتض عىل يحتوي )students.txt( السطر التايل: Salim:96555:Engineering لتقسيم السطر وطباعة الجزء املراد, اكتب األمرالتايل: cut -d : -f 3 students.txt الرمز الذي يفصل بني األقسام يف امللف : رقم القسم املراد 3 امللف الذي يحتوي عىل السطر students.txt
173
8 äghocلg áقëلÿg 174
العناوين: كامريا ويب webcam( )USB طريقة االستخدام والتوصيل التقاط الصور تسجيل فيديو الكامريا عالية الدقة املخصصة للرازبريي باي Module( )PI Camera إعدادات التوصيل والتفعيل التقاط الصور تسجيل الفيديو شاشة اللمس املخصصة للرازبريي باي )RPI-LCD( خطوات التشغيل لوحة مفاتيح رسومية لشاشة اللمس keyboard( )Virtual السامعة وامليكروفون Microphone( )Speaker & تسجيل الصوت تجربة تحويل النص إىل صوت تجربة املفتاح لتحويل النص إىل صوت مودم السليك USB 3G Modem إعدادات التشغيل و التعريف البدء باالتصال باإلنرتنت 175
كامريا ويب webcam( )USB كام نعلم أن الرازبريي باي متتلك منافذ )USB( مت ك نك من ربط بعض األجهزة واألدوات الخارجية وميكن استخدامها يف عمل مشاريع متطورة ومن هذه األدوات كامريا ويب التي تتميز بسعرها الرخيص وسهولة استخدامها وتساعدك يف عمل مشاريع رائعة من خالل التقاط الصور وتسجيل الفيديو وبث الفيديو عرب اإلنرتنت وغريها من املشاريع. طريقة االستخدام والتوصيل: lsusb بكل سهولة يتم توصيل كامريا ويب من خالل منفذ )USB( يف الرازبريي باي بعد ذلك نقوم بتشغيل الرازبريي باي. أوال نقوم بعرض األجهزة املرتبطة مبنافذ )USB( للتأكد من تعريف الكامريا من خالل رشيط األوامر )Terminal( نكتب األمر التايل: ls /dev/v* وأيضا نقوم بعرض ملفات األجهزة املوجودة يف مجلد /dev/ لنتأكد من وجود ملف كامريا ويب ويتم ذلك من خالل األمر التايل )سنالحظ وجود ملف video0 لكامريا الويب(: 176
التقاط الصور أوال نقوم بتنصيب برنامج fswebcam من خالل األمر التايل: sudo apt-get install y fswebcam ثم نقوم بالتقاط صورة باستخدام كامريا الويب من خالل األمر التايل: fswebcam -d /dev/video0 -r 720x640 image.jpeg رشح األمر: fswebcam لتشغيل الكامريا d- /dev/video0 لتحديد ملف الكامريا املوجود يف املجلد /dev/ r- 720x640 لتحديد دقة الصورة image.jpeg لتحديد اسم الصورة مالحظة: يتم حفظ الصور يف مجلد املستخدم وهو /home/pi/ 177
تسجيل فيديو أوال نقوم بتنصيب برنامج ffmpeg الذي ي ستخدم لتسجيل الفيديو و نقوم أيضا بتنصيب برنامج mplayer لتشغيل ملفات الفيديو. نقوم بتنصيب الربنامجني من خالل األوامر التالية: sudo apt-get install -y ffmpeg sudo apt-get install -y mplayer ثم نقوم بتسجيل الفيديو من خالل األمر التايل: avconv -f video4linux2 -r 25 -s 720x640 -i /dev/ video0 myvideo.avi رشح األمر: avconv لتشغيل الكامريا يف وضع الفيديو s- 720x640 لتحديد دقة الفيديو i- /dev/video0 لتحديد ملف الكامريا املوجود يف املجلد /dev/ myvideo.avi لتحديد اسم الفيديو ثم يقوم برنامج ffmpeg بتسجيل الفيديو وإليقاف التسجيل اضغط عىل Ctrl+C وسيتم حفظ الفيديو يف مجلد املستخدم /home/pi/ 178
استخدم برنامج mplayer لتشغيل الفيديو من خالل الضغط مرتني بزر الفأرة األيرس عىل ملف الفيديو أو باستخدام رشيط األوامر من خالل األمر التايل: mplayer /home/pi/myvideo.avi 179
الكامريا عالية الدقة املخصصة للرازبريي باي )PI Camera Module( تتميز الكامريا املخصصة للرازبريي باي باستخدامها يف التقاط الصور والفيديو عايل الدقة وتتميز أيضا بسهولة استخدامها. إعدادات التوصيل والتفعيل: نقوم أوال بتوصيل الكامريا عالية الدقة بالرازبريي باي من خالل منفذ CSI املوجود بني منفذ Ethernet ومنفذ HDMI كام يف الصورة أدناه. ثم نقوم بتفعيل الكامريا عالية الدقة من خالل الدخول عىل إعدادات الرازبريي باي وذلك بكتابة األمر التايل يف سطر األوامر :)Terminal( sudo raspi-config واخرت Enable camera ثم اخرت. Enable بعد ذلك قم بإعادة تشغيل الرازبريي باي من خالل اختيار. Finish 180
التقاط الصور استخدم رشيط األوامر واكتب األمر التايل اللتقاط صورة: raspistill -o image.jpg رشح األمر: raspistill image.jpg لتشغيل الكامريا يف وضع التقاط الصور لتحديد اسم الصورة 181
تسجيل الفيديو: لتسجيل فيديو اكتب األمر التايل يف رشيط األوامر: raspivid -o video.mp4 -t 15000 رشح األمر: لتشغيل الكامريا يف وضع تسجيل الفيديو raspivid لتحديد اسم الفيديو video.mp4 لتحديد مدة الفيديو باملليل ثانية = 1000 1 ثانية t- 15000 182
شاشة اللمس املخصصة للرازبريي باي )RPI-LCD( ميكنك اآلن استخدام شاشة اللمس املخصصة للرازبريي باي التي تتميز بصغر حجمها كام ميكنك استخدامها كواجهة رسومية بدال من الشاشة العادية. خطوات التشغيل: قم برتكيب شاشة اللمس املخصصة للرازبريي باي يف منافذ الرازبريي باي كام يظهر ذلك يف الصورة املجاورة. 1 قم بتحميل ملف التعريف لشاشة اللمس من خالل سطر األوامر: إذا كان نظام التشغيل للرازبريي باي من النسخة 2015-05-05-raspbian أو أحدث اكتب األمر التايل: 2 wget http://www.waveshare.com/w/ upload/4/4b/lcd-show-161112.tar.gz 183
3 فك الضغط عن امللف املحمل: إذا كان نظام التشغيل للرازبريي باي من النسخة 2015-05-05-raspbian أو أحدث اكتب األمر التايل: tar xvf LCD-show-161112.tar.gz الدخول إىل مجلد LCD-show من خالل سطر األوامر اكتب األمر التايل: 4 cd LCD-show اآلن قم بتشغيل النظام عىل شاشة اللمس من خالل سطر األوامر: إذا كانت شاشة اللمس بحجم 3.2 inch اكتب األمر التايل: 5 sudo./lcd32-show إذا كانت شاشة اللمس بحجم التايل: 3.4 inch اكتب األمر sudo./lcd35-show 184
اكتب األمر إذا كانت شاشة اللمس بحجم 4 inch التايل: sudo./lcd4-show اكتب األمر إذا كانت شاشة اللمس بحجم 5 inch التايل: sudo./lcd5-show بعد ذلك سوف تقوم الرازبريي باي بإعادة التشغيل وانتظر بعض الوقت وسيظهر النظام عىل شاشة اللمس. واآلن استمتع باستخدام شاشة اللمس عىل الرازبريي باي. 185
إذا كنت تريد أن تستخدم الشاشة العادية من خالل منفذ HDMI..قم باتباع الخطوات التالية: الدخول إىل مجلد LCD-show من خالل سطر األوامر )Terminal( اكتب األمر التايل: cd LCD-show اكتب األمر التايل لتشغيل النظام عىل الشاشة العادية: sudo./lcd-hdmi لوحة مفاتيح رسومية لشاشة اللمس keyboard( :)Virtual بإمكانك استخدام لوحة مفاتيح رسومية لشاشة اللمس من خالل تثبيت برنامج لوحة املفاتيح الرسومية.)matchbox-keyboard( 1 من خالل رشيط األوامر )Terminal( اكتب األوامر التالية: sudo apt-get install libfakekey-dev libpng-dev libxft-dev autoconf libtool y sudo apt-get install unzip -y 186
2 قم بتحميل ملفات التثبيت لربنامج matchbox-keyboard من خالل األمر التايل: wget http://www.spotpear.com/download/software/ Raspberry-Pi/matchbox-keyboard.zip 3 فك الضغط عن امللف املحمل من خالل األمر التايل: unzip matchbox-keyboard.zip 4 الدخول إىل مجلد matchbox-keyboard من خالل سطر األوامر اكتب األمر التايل: cd matchbox-keyboard 5 اكتب األوامر التالية لتثبيت وتفعيل لوحة املفاتيح الرسومية: sudo bash autogen.sh sudo make sudo make install sudo apt-get install libmatchbox1 -y 6 قم بإنشاء ملف األوامر من خالل األمر التايل: و اكتب النص التايل: sudo nano /usr/bin/toggle-matchbox-keyboard.sh 187
#!/bin/bash #This script toggle the virtual keyboard PID=`pidof matchbox-keyboard` if [! -e $PID ]; then killall matchbox-keyboard else matchbox-keyboard -s 50 extended& fi بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. 7 اكتب األمر التايل: sudo chmod +x /usr/bin/toggle-matchboxkeyboard.sh 8 اكتب األمر التايل لتحرير ملف سطح املكتب: sudo nano /usr/local/share/applications/ toggle-matchbox-keyboard.desktop 188
و اكتب النص التايل: [Desktop Entry] Name=Toggle Matchbox Keyboard Comment=Toggle Matchbox Keyboard` Exec=toggle-matchbox-keyboard.sh Type=Application Icon=matchbox-keyboard.png Categories=Panel;Utility;MB X-MB-INPUT-MECHANSIM=True بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. 9 اكتب األمر التايل: sudo nano ~/.config/lxpanel/lxde-pi/panels/panel و ابحث يف امللف عن هذا النص: 189
Plugin { type=launchbar Config { Button { id=/usr/share/applications/epiphany-browser.desktop } Button { id=/usr/share/applications/pcmanfm.desktop } Button { id=/usr/share/applications/lxterminal.desktop } Button { id=/usr/share/applications/wolfram-mathematica.desktop } Button { id=/usr/share/applications/wolfram-language.desktop } } } بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. 9 قم بإعادة التشغيل من خالل األمر التايل: sudo reboot 190
قم بإضافة النص األحمر وبحيث يكون ذلك النص كالتايل: Plugin { type=launchbar Config { Button { id=toggle-matchbox-keyboard.desktop } Button { id=/usr/share/applications/epiphany-browser.desktop } Button { id=/usr/share/applications/pcmanfm.desktop } Button { id=/usr/share/applications/lxterminal.desktop } Button { id=/usr/share/applications/wolfram-mathematica.desktop } Button { id=/usr/share/applications/wolfram-language.desktop } } } بعد إعادة التشغيل ستظهر أيقونة لوحة املفاتيح الرسومية يف رشيط الربامج لسطح املكتب. 191
السامعة وامليكروفون Microphone( :)Speaker & ميكنك استخدام السامعة وامليكروفون يف املشاريع الصوتية يف الرازبريي باي متتلك رازبريي باي منفذ السامعة كمخرج للصوت ميكنك استخدام امليكروفون والسامعة من خالل وصلة بطاقة الصوت يف منفذ.USB البد من ضبط بعض اإلعدادات التي متكننا من استخدام وصلة بطاقة الصوت يف الرازبريي باي. قم بإدخال وصلة بطاقة الصوت يف منفذ USB يف الرازبريي باي. لتتأكد من تعريف وصلة بطاقة الصوت يف الرازبريي باي قم بإظهار بطاقات الصوت املوجودة يف 1 2 cat /proc/asound/cards ستظهر لك القراءات التالية: يعني ذلك أن الرقم األول 0 هو بطاقة الصوت املدمجة بالرازبريي باي والرقم الثاين 1 هو وصلة بطاقة الصوت التي سنستخدمها. اكتب األمر التايل لتفعيل وصلة بطاقة الصوت من خالل تحرير ملف : alsa-base.conf 3 sudo nano /etc/modprobe.d/alsa-base.conf 192
وابحث عن هذا السطر #options snd-usb-audio index=-2 وقم بتعديله إىل options snd-usb-audio index=0 نحتاج أيضا إىل إنشاء ملف إلعدادات أخرى للوصلة من خالل األمر التايل: sudo nano etc/asound.conf واكتب فيه النص التايل: pcm.usb { type hw card AK5370 } 193 pcm.internal { type hw card ALSA }
pcm.!default { type asym playback.pcm { type plug slave.pcm "internal" } capture.pcm { type plug slave.pcm "usb" } } ctl.!default { type asym playback.pcm { type plug slave.pcm "internal" } capture.pcm { type plug slave.pcm "usb" } } 194
ثم نقوم بتثبيت بعض امللفات والربامج التي نحتاجها ملشاريع الصوت من خالل األوامر التالية: 4 sudo apt-get update sudo apt-get install bison sudo apt-get install libasound2-dev sudo apt-get install swig sudo apt-get install mplayer 5 قم بإعادة التشغيل من خالل األمر التايل: sudo reboot تسجيل الصوت: واآلن سوف نقوم بتسجيل ملف صويت باستخدام امليكروفون. قم بإدخال امليكروفون يف منفذ امليكروفون املوجود يف وصلة بطاقة الصوت اكتب األمر التايل لتسجيل ملف صويت: 1 2 arecord -D plughw:0,0 -f cd./test.wav سوف تقوم الرازبريي باي بتسجيل ملف صويت..إليقاف التسجيل اضغط عىل Ctrl+C وسيتم حفظ امللف الصويت. لتشغيل امللف الصويت, قم بكتابة األمر التايل: aplay./test.wav 195
تجربة تحويل النص إىل صوت: يف البداية يجب أن نقوم بتنصيب وإعداد بعض الربامج الرضورية حتى نتمكن من القيام بهذه التجربة كام هو موضح يف الخطوات التالية: أوال: تنصيب الربامج الخاصة بالصوت وذلك من خالل كتابة األوامر التالية يف سطر األوامر: sudo apt-get install alsa-utils sudo apt-get install mplayer ثانيا: تغيري بعض إعدادات الصوت من خالل األمر التايل : sudo nano /etc/modules بعدها ستظهر شاشة كام يف الصورة التالية. نقوم بإضافة النص التايل يف الصفحة السابقة: snd-bcm2835 196
بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. ثالثا: ضبط مخرج الصوت عن طريق فتح نافذة اإلعدادات الخاصة بالرازبريي باي ولفتح هذه النافذة نقوم بكتابة األمر التايل يف سطر األوامر: sudo raspi-config بعدها ستظهر لوحة اإلعدادات كام هو موضح يف الصورة نقوم باختيار الخيار Options( )Advanced والذي ميثل اإلعدادات املتقدمة للرازبريي باي. ستظهر نافذة أخرى كام هو موضح نقوم باختيار الخيار )Audio( 197
ستظهر نافذة أخرى نقوم باختيار الوضع املناسب ثم الضغط عىل.Enter عند االنتهاء من هذه اإلعدادات يجب إعادة تشغيل الرازبريي باي من خالل األمر التايل: sudo reboot رابعا: تنصيب الرنامج الذي يحول النص إىل صوت من خالل األمر التايل: sudo apt-get install espeak 198
بعد االنتهاء من االعدادات الالزمة لهذه التجربة سنقوم اآلن بتحويل أي نص نقوم بإدخاله إىل صوت مع إمكانية تعديل املتحدث ورسعته. من خالل سطر األوامر قم بكتابة األمر التايل: espeak The text قم باستبدال ما بني عالمتي التنصيص text The بالنص الذي تريده مثال عىل ذلك : espeak Hello Raspberry Pi هذه املرة سنقوم بتغيري املتحدث من رجل إىل امرأة وذلك من خالل إضافة النص التايل يف األمر )-ven+f3( كام ميكننا تقليل رسعة املتحدث. )- وذلك من خالل إضافة النص التايل يف األمر )s200- k5 مثال عىل ذلك : espeak ven+f3 k5 s200 Hello Raspberry Pi 199
تجربة املفتاح لتحويل النص إىل صوت: نقوم بتوصيل الدائرة كام هو موضح بالشكل. نقوم بإنشاء ملف جديد من خالل كتابة األمر التايل يف سطر األوامر: sudo nano text_to_speech.py بعدها سيظهر برنامج محرر النصوص ونقوم بكتابة الكود الربمجي. 200
import os from time import sleep import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(12,GPIO.IN) GPIO.setup(16,GPIO.IN) GPIO.setup(20,GPIO.IN) GPIO.setup(21,GPIO.IN) while True: if (GPIO.input(12)== True): os.system("espeak -k5 -s150 'You Are'") if (GPIO.input(16)== True): os.system("espeak -k5 -s150 'Welcome' ") if (GPIO.input(20)== True): os.system("espeak -k5 -s150 'To Learn' ") if (GPIO.input(21)== True): os.system("espeak -k5 -s150 'In Enginnering Village' ") sleep(0.1) بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. قم بتشغيل الكود الربمجي من خالل األمر التايل: sudo python text_to_speech.py بعدها سنالحظ خروج األصوات املختلفة عند الضغط عىل األزرار. 201
مودم السليك USB 3G Modem يتميز جهاز املودم الالسليك بسهولة اإلتصال الالسليك والوصول إىل شبكة اإلنرتنت من خالل شبكة الجوال ويتميز أيضا بالرسعة العالية لإلتصال باإلنرتنت وكذلك ص غ ر حجمه. إعدادات التشغيل و التعريف: توصيل جهاز املودم الالسليك: أوال نقوم بإدخال بطاقة الهاتف املحمول يف جهاز املودم الالسليك ثم توصيل جهاز املودم الالسليك بالرازبريي باي من خالل منفذ.USB تعريف جهاز املودم الالسليك: يستطيع نظام التشغيل املستخدم يف الرازبريي باي التعرف عىل معظم أجهزة املودم الالسليك ملعرفة ما إذا كان نظام التشغيل قد تعرف عىل جهاز املودم الالسليك اكتب األمر التايل يف رشيط األوامر: 1 2 ls /dev/tty* إذا ظهر ملف /dev/ttyusb0/ فيعني ذلك أن نظام التشغيل قد تعرف عىل جهاز املودم الالسليك وإذا مل يظهر امللف فيعني ذلك أن تعريف جهاز املودم الالسليك يحتاج إىل بعض اإلعدادات ويتم ذلك من خالل كتابة األوامر التالية يف رشيط األوامر :)Terminal( sudo apt-get install ppp 202
sudo apt-get install usb-modeswitch sudo /usr/bin/sg_raw /dev/sr0 11 06 20 00 00 00 00 00 01 00 األمر األول والثاين يقوم بتنصيب أدايت ppp و usb-modeswitch التي تساعد نظام التشغيل عىل تعريف الجهاز و تجاهل وظيفة الذاكرة الداخلية لجهاز املودم. األمر الثالث يقوم بتأكيد استخدام وظيفة االتصال باإلنرتنت لجهاز املودم الالسليك. مالحظة: قد تواجهك مشكلة يف األمر الثالث..يف هذا الحالة تجاهل هذا األمر وانتقل للخطوة التالية. البدء باالتصال باإلنرتنت: سوف نستخدم برنامج sakis3g الذي يقوم بضبط إعدادت االتصال تلقائيا واالتصال باإلنرتنت من خالل جهاز املودم الالسليك. أوال نقوم بتحميل الربنامج وتنصيبه عىل الرازبريي باي من خالل كتابة األوامر التالية يف رشيط األوامر :)Terminal( 1 wget http://raspberry-at-home.com/files/sakis3g.tar.gz 203
sudo tar -zxvf sakis3g.tar.gz mv sakis3g sakis3g cd sakis3g sudo chmod +x sakis3g نقوم بضبط إعدادات االتصال الخاصة ببطاقة الهاتف من خالل إنشاء ملف وكتابة اإلعدادات فيه وذلك من خالل كتابة األمر التايل يف رشيط األوامر: 2 sudo nano /etc/sakis3g.conf ونقوم بكتابة األسطر التالية لضبط إعدادات االتصال. إعدادات لبطاقة حياك -عامن موبايل إعدادات بطاقة أوريدو: USBINTERFACE="0" APN="nawras" APN_USER="test" APN_PASS="test" MODEM="xxxx:yyyy" USBINTERFACE="0" APN="taif" APN_USER="test" APN_PASS="test" MODEM="xxxx:yyyy" تعتمد هذه اإلعدادات عىل مشغل الخدمة. األمثلة أعاله هي ملشغيل خدمة من دول الخليج.. قم بإستبدال رمز APN حسب الرمز املناسب لبلدك 204
مالحظة مهمة: يف السطر األخري استبدل "xxxx:yyyy" برمز جهاز املودم الالسليك يف منفذ USB وذلك من خالل كتابة األمر التايل يف رشيط األوامر :)Terminal( lsusb الرمز موجود قبل اسم الجهاز )رمز جهازي كام يف الصورة أعاله هو 12d1:1446( بعد االنتهاء من كتابة األسطر يف امللف نقوم بإغالق امللف من خالل الضغط عىل Ctrl+X ثم الضغط عىل y لحفظ امللف. اآلن نبدأ االتصال باإلنرتنت من خالل كتابة األمر التايل يف رشيط األوامر :)Terminal( 3 /home/pi/sakis3g/sakis3g --sudo "connect" 205
بعد كتابة األمر السابق سوف يقوم جهاز املودم الالسليك باالتصال باإلنرتنت ويستغرق ذلك بعض الوقت وستظهر رسالة تفيد بأنه قد تم اإلتصال بالشبكة. لقطع االتصال اكتب األمر التايل يف رشيط األوامر: /home/pi/sakis3g/sakis3g --sudo "disconnect" 206
سلسلة أوامر لينكس أوامر لينكس )6( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )wget( يقوم هذا األمر بتحميل ملف ما من شبكة اإلنرتنت ويتم استخدامه من خالل كتابة رابط تحميل امللف بعد األمر :)wget( wget url_download wget http://www.ev-center.com/uploa ds/2/1/2/6/21261678/7911767_orig.png هذا السطر هو من األوامر التي ت كت ب يف سطر األوامر لذلك تم وضعه يف الشكل نفسه لألوامر.
208
yammy!
9 äéµñ ûdg 210
توصيل الرازبريي باي بشبكة اإلنرتنت سلكيا )Ethernet( السلكيا )WiFi( باستخدام سطر األوامر باستخدام الواجهة الرسومية كيف يتم التواصل بني أكرث من رازبريي باي كيف تتحكم مبنافذ GPIO من خالل الشبكة ضبط خادم DHCP الربيد اإللكرتوين عرب سطر األوامر 211
مقدمة: هل سبق وأن سمعت مبصطلح هندسة الشبكات هل تعلم ما هي وما هي شبكات التواصل و ربط الشبكات تتكون الشبكات من عدة حواسيب وأجهزة متصلة ببعضها البعض لتبادل املعلومات والبيانات وتسمح للمستخدمني بالتواصل مع بعضهم البعض باستخدام شبكات التواصل اإلجتامعي عىل سبيل املثال تويرت و فيسبوك. يف هذا الفصل سرنكز عىل كيفية عمل شبكة اتصال بني أكرث من رازبريي باي وكيف يتم التواصل وما الذي نحتاجه لعمل شبكة و سنتعلم كيف نربط الرازبريي باي بشبكة اإلنرتنت. ببساطة ميكن توصيل 2 رازبريي باي إما عن طريق كابل الشبكة )Ethernet( أو عن طريق شبكة واي فاي.)wifi( توصيل الرازبريي باي بشبكة اإلنرتنت ميكن توصيل الرازبريي باي بشبكة اإلنرتنت من خالل الطرق التالية: سلكيا :)Ethernet( عن طريق توصيل املدخل الخاص بشبكة اإلنرتنت يف لوحة الرازبريي باي بكابل اإلنرتنت cable( )Ethernet ومنه إىل املودم الخاص باإلنرتنت. 1 212
بعدها ستالحظ أن مؤرشات اإلنرتنت عىل لوحة الرازبريي باي قد بدأت بالعمل بعدها ميكنك الدخول عىل متصفح اإلنرتنت والتأكد من أنه يعمل. السلكيا :)WiFi( وذلك عن طريق توصيل وصلة الالسليك adapter( )Wi-Fi يف أحد منافذ )USB( الخاصة بالرازبريي باي. 2 مع رضورة التأكد من أن الوصلة التي تستخدمها متوافقة مع النظام املستخدم يف الرازبريي باي وميكن التعرف عىل توافق الوصلة الالسلكية مع النظام من خالل كتابة األمر التايل يف سطر األوامر :)Terminal( lsusb ستظهر األجهزة املرتبطة مبنفذ USB للرازبريي باي من ضمنها الوصلة الالسلكية كام يظهر لنا يف الصورة WLAN( :)Adapter 213
وميكن ربط الرازبريي باي بشبكة اإلنرتنت باستخدام الوصلة الالسلكية عن طريق سطر األوامر أو الواجهة الرسومية للنظام. وفيام ييل خطوات إلكامل عملية التوصيل باستخدام كال الطريقتني : باستخدام سطر األوامر: نقوم بفتح سطر األوامر )Terminal( ثم نقوم بكتابة األمر التايل: 1 sudo nano /etc/network/interfaces 2 قم باستبدال محتوى امللف بالنص التايل: 214
auto lo iface lo inet loopback iface eth0 inet dhcp allow wlan0 iface wlan0 inet manual iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf قم بالضغط عىل) Ctrl+X ( ثم ستظهر رسالة تنبيه أسفل الشاشة املفتوحة إذا ما كنت ترغب بحفظ التغيريات قم بالضغط عىل )y( أي موافق عىل التغيريات ثم اضغط.Enter قم بتحديد بيانات الشبكة التي يتم اإلتصال بشبكة اإلنرتنت من خاللها من خالل األمر التايل: 3 4 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 215
سيظهر لنا امللف وسنقوم بتعديله إىل النص التايل: ctrl_interface=dir=/var/run/wpa_ supplicant GROUP=netdev update_config=1 network={ ssid="user_name" psk="password" proto=rsn key_mgmt=wpa-psk pairwise=ccmp TKIP group=ccmp TKIP } مالحظة : user_name تغيريها باسم الشبكة. : password تغيريها بالرمز الرسي للشبكة. بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ التغيريات يف امللف. 216
5 قم بإيقاف تشغيل الرازبريي باي من خالل كتابة األمر التايل: sudo poweroff نقوم بتوصيل وصلة الشبكة adapter( )WiFi قم بتشغيل الرازبريي باي بعدها سيتم ربط الشبكة تلقائيا. 6 7 مالحظة مالحظة: يف حالة أن عملية الربط بالشبكة مل تتم قم بكتابة األمر التايل إلعادة تفعيل إعدادات الشبكة: sudo service networking reload باستخدام الواجهة الرسومية: من القامئة الرئيسية )Menu( نقوم بالضغط عىل الخيار )Preference( ثم configuration( )WiFi كام هو موضح يف الصورة. 1 217
2 بعدها ستظهر لنا الشاشة التالية منها نقوم بالضغط عىل كلمة )scan( بعدها ستظهر شاشة أخرى نقوم بالضغط عىل كلمة )scan( ليبدأ بعملية البحث عن الشبكات املحيطة بك. 3 نقوم بالضغط عىل الشبكة املطلوبة وستظهر شاشة كام يف الصورة. نقوم بإدخال الرقم الرسي للشبكة يف الخانة املقابلة لكلمة )PSK( ثم نضغط عىل كلمة.)Add( 4 218
أخريا نعود للقامئة التي بدأنا العمل عليها يف البداية ونقوم بالضغط عىل كلمة )Connect( بعدها بلحظات سيتم توصيل الرازبريي باي بشبكة اإلنرتنت. 5 كيف يتم التواصل بني أكرث من رازبريي باي كيف ميكننا أن نعمل دردشة بني أكرث من رازبريي باي يف هذه التجربة سنقوم بتشكيل شبكة بني 2 رازبريي باي واستخدام لغة بايثون لكتابة برنامج إلرسال الرسائل بينهام. يف البداية سنتأكد من تحديث وترقية النظام الخاص بنا: sudo apt-get update sudo apt-get upgrade بعدها سنقوم بتنزيل ملف network.py افتح برنامج سطر األوامر )Terminal( واكتب األمر التايل: wget https://goo.gl/ujmdzh -O network.py --no-checkcertificate 219
وعند انتهاء التحميل تأكد من وجود امللف يف املجلد الحايل من خالل األمر التايل: ls بعدها قم بإيصال 2 رازبريي باي مع بعضها البعض باستخدام كابل الشبكة.)Ethernet( سنقوم بضبط عنوان الشبكة IP الخاص بالرزابريي باي: افتح سطر األوامر )Terminal( واكتب األمر التايل: sudo nano /etc/network/interfaces ابحث يف امللف عن السطر التايل: iface eth0 inet dhcp أبدل كلمة dhcp إىل. static وبعدها اكتب األسطر التالية: iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 220
احفظ امللف باستخدام CTRL+O بعدها CTRL+X لغلق املحرر. ثم اكتب األمر التايل إلعادة تشغيل الشبكة للرازبريي باي : sudo service networking restart اكتب األمر التايل: ifconfig لنتأكد أن الرزابريي باي أصبحت متلك عنوان الشبكة 192.168.0.2 يف السطر الذي يبدأ بeth0 : كرر هذه العملية لجهاز الرزابريي باي الثانية...وتأكد من أن عنوان الشبكة الخاصة للرزابريي باي الثانية ال يشبه عنوان شبكة الرازبريي باي األوىل ميكنك استخدام أي عنوان للشبكة من 192.168.0.3 إىل 192.168.0.254 فلنفرتض أنك وضعت عنوان الشبكة لرازبريي باي الثانية : 192.168.0.3 حتى نتأكد من أن الرزابريي باي األوىل والثانية متصالت يف نفس الشبكة اكتب األمر التايل يف الرازبريي باي األوىل: 221
ping 192.168.0.3 -c5 ستظهر لك القراءات التالية PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data. 64 bytes from 192.168.0.3: icmp_req=1 ttl=128 time=3.46 ms [...four more PINGs...] --- 192.168.0.3 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 3.466/3.788/4.380/0.322 ms إذا ال تأكد من أن كابل الشبكة أنه متصل جيدا بكال الجهازين وتأكد أنك اتبعت اإلعدادات الصحيحة. يف سطر األوامر )Terminal( قم بإنشاء ملف جديد من خالل األمر التايل: nano chat.py اكتب يف امللف األسطر التالية: 222
import network import sys def heard(phrase): print("them:" + phrase) if (len(sys.argv) >= 2): network.call(sys.argv[1], whenhearcall=heard) else: network.wait(whenhearcall=heard) while network.isconnected(): phrase = raw_input() #for python2 # phrase = input() #for python3 print("me:" + phrase) network.say(phrase) احفظ امللف CTRL+O واغلق امللف CTRL+X واآلن قم بتشغيل الربنامج من خالل األمر التايل: sudo python chat.py و اآلن انتهينا من ضبط الرازبريي باي األوىل التي ستقوم بدور الخادم واآلن سنقوم بضبط الرازبريي باي األخرى لتكون العميل أو املستخدم. قم بإنشاء ملف جديد من خالل األمر التايل: nano chat.py واكتب فيه الربنامج نفسه الذي كتبته للرازبريي باي األوىل وقم بحفظ امللف. واآلن قم بتشغيل الربنامج مع كتابة عنوان الشبكة الخاصة بالخادم من خالل األمر التايل: 223
sudo python chat.py 192.168.0.2 وميكنك اآلن عمل مراسلة بني الجهازين أو بني الخادم واملستخدم. كيف تتحكم مبنافذ GPIO من خالل الشبكة كيف ميكن أن نتحكم مبنافذ GPIO من خالل الشبكة باإلستفادة من الربنامج السابق..كل ما علينا فعله هو تعديل الربنامج الخاص بالرازبريي باي. أوال نقوم بتوصيل LED يف الرازبريي باي مثل الصورة: ثم قم بفتح ملف جديد من خالل األمر التايل: nano gpio.py واكتب يف امللف هذه األسطر: 224
import network import sys import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.OUT) def heard(phrase): print("them:" + phrase) GPIO.output(11,int(phrase)) if (len(sys.argv) >= 2): network.call(sys.argv[1], whenhearcall=heard) else: network.wait(whenhearcall=heard) while network.isconnected(): phrase = raw_input() #for python2 # phrase = input() #for python3 heard(phrase) ويف الرازبريي باي األخرى نستخدم الربنامج السابق دون أي تغيري. ميكنك استخدام أي حاسب آيل ميلك نظام تشغيل لينكس.)Linux( يف الرازبريي باي األوىل اكتب األمر التايل: sudo python gpio.py يف الرازبريي باي الثانية )الحاسب اآليل اآلخر( اكتب األمر التايل مع التأكد من عنوان الشبكة للخادم: sudo python chat.py 192.168.0.2 وبعدها نكتب: 1 لتشغيل ال LED و 0 إلطفاء ال LED 225
ضبط خادم DHCP Dynamic Host Configuration Protocol اختصار DHCP وتعني بروتوكول اإلعداد اآليل للمضيف يستخدم هذا الربوتوكول إلسناد عناوين IP بشكل آيل لحواسيب مضيفة IP يستخدم لتجنب حاالت تكرار عناوين الشبكة. )Hosts( يف أكرث من جهاز مام يؤدي إىل فصلها عن الشبكة. يف السابق كنا نسند عناوين الشبكة IP للرزابريي باي بطريقة يدوية ونتأكد أن IP الخاص بالرازبريي باي مختلف عن IP الرزابريي باي األخرى. لكن باستخدام خادم DHCP العملية ستكون سهلة يف إسناد عناوين IP لكل رازبريي باي بالشبكة وسنتعلم مدى حاجة خادم DHCP عند تصميم شبكة داخلية. يف البداية سنوضح بعض املصطلحات : الخادم : server عبارة عن كمبيوتر هدفه األسايس هو توفري خدمة عىل سبيل املثال خادم الويب هدفه األسايس هو نقل الصور وصفحات الويب إليك عرب اإلنرتنت عندما تطلبها. العميل : Client يطلق عىل الكمبيوتر أو املستخدمني الذين يستخدمون الخادم للحصول عىل خدمة عىل سبيل املثال املتصفحات مثل فايرفوكس وجوجل كروم يطلق عليها عمالء الويب ألنها تعمل كعمالء لخادم الويب. املضيف : Host هي كلمة أخرى للكمبيوتر. بروتوكول : Protocol تعني مجموعة من القواعد التي تحدد كيفية القيام باألشياء. 226
خادم server( :)DHCP أوال سنختار الرازبريي باي واحد التي ستقوم بدور الخادم. DHCP نفتح سطر األوامر ونكتب األوامر التالية: sudo apt-get update sudo apt-get install dnsmasq وبطبيعة الحال خادم DHCP دامئا يحمل عنوان شبكة IP ثابت إذا سنقوم بتغري IP الخاص بالخادم من خالل األمر التايل: sudo nano /etc/network/interfaces سنقوم بتغري السطر التايل: iface eth0 inet dhcp ليصبح هكذا # iface eth0 inet dhcp Auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 احفظ امللف CTRL+Oواغلقه CTRL+X اكتب األمر التايل إلعادة تشغيل خدمة االتصال بالشبكة: sudo service networking restart 227
بعدها ميكنك التأكد من أن عنوان الشبكة IP هو 192.168.0.1 باستخدام األمر ifconfig سنقوم بضبط خادم dhcp عن طريق تعديل ملف dnsmasq سنأخذ نسخة احتياطية من امللف ونقوم بالتعديل عىل امللف من خالل األوامر التالية: sudo mv /etc/dnsmasq.conf /etc/dnsmasq.default sudo nano /etc/dnsmasq.conf اكتب األسطر التالية يف امللف: interface=eth0 dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h السطر األول يعنى أن dnsmasq يستمع لطلبات IP باستخدام منفذ الشبكة )Ethernet( أما السطر الثاين يحدد نطاق عناوين الشبكة التي ميكن لبقية األجهزة الحصول عليها أما 12h توضح الفرتة التي ميكن لكل جهاز االحتفاظ بعنوان الشبكة الخاص به. احفظ امللف CTRL+O ثم اغلق امللف CTRL+X بعدها قم بإعادة تشغيل dnsmasq من خالل األمر التايل: sudo service dnsmasq restart 228
العميل :)client( يف بقية أجهزة الرزابريي باي التي متثل أنها عمالء نعدل عناوين الشبكة من عنوان ثابت إىل عنوان متغري )دايناميك( من خالل األمر التايل: sudo nano /etc/network/interfaces ونتأكد من أن السطر املوجود بامللف هو نفسه الذي باألسفل: iface eth0 inet dhcp احفظ امللف CTRL+O ثم اغلق امللف CTRL+X بعدها قم بإعادة تشغيل خدمة االتصال بالشبكة من خالل األمر التايل: sudo service networking restart ثم نتاكد من IP الخاص بالرازبريي باي باستخدام األمر ifconfig إذا أردت إيقاف الحصول عىل IP من خادم DHCP اكتب األمر التايل: sudo ifdown eth0 وإذا أردت الحصول عىل IP من خادم DHCP اكتب األمر التايل: sudo ifup eth0 229
الربيد اإللكرتوين عرب سطر األوامر بإمكانك إرسال رسالة إلكرتونية عرب الربيد اإللكرتوين باستخدام سطر األوامر مع إرسال املرفقات كصورة أو فيديو أو ملف. سوف نستخدم برنامج postfix لتفعيل خدمة الربيد اإللكرتوين. قم بتثبيت الربامج التالية من خالل األوامر التالية يف سطر األوامر: 1 sudo apt-get install postfix sudo apt-get install mailutils sudo apt-get install mpack قم بتحرير ملف /etc/postfix/main.cf/ لضبط إعدادات الربيد اإللكرتوين من خالل األمر التايل: 2 sudo nano /etc/postfix/main.cf قم بإضافة األسطر التالية يف نهاية امللف لضبط إعدادات الربيد اإللكرتوين :Gmail 230
relayhost=[smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_always_send_ehlo = yes smtp_tls_security_level=may inet_protocols=ipv4 inet_interfaces=loopback-only mynetworks_style=host append_dot_mydomain=no بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. قم تحرير ملف /etc/postfix/sasl_passwd/ من خالل األمر التايل: 3 sudo nano /etc/postfix/sasl_passwd 231
اكتب السطر التايل لتحديد الربيد اإللكرتوين الذي متلكه و الرمز الرسي له: [smtp.gmail.com]:587 username@gmail.com:password مالحظة استبدل username@gmail.com بالربيد اإللكرتوين الذي متلكه. استبدل password بالرمز الرسي للربيد اإللكرتوين. بعد ذلك اضغط عىل Ctrl+X ثم y واضغط Enter لحفظ امللف. اإلعدادات السابقة للربيد اإللكرتوين.Gmail اكتب األمر التايل يف سطر األوامر: 3 sudo postmap /etc/postfix/sasl_passwd قم بإعادة تشغيل خدمة الربيد اإللكرتوين postfix من خالل األمر التايل: 3 sudo /etc/init.d/postfix restart وبهذا نكون قد انتهينا من ضبط إعدادات الربيد اإللكرتوين. 232
واآلن سوف نقوم باستخدام خدمة الربيد اإللكرتوين من خالل إرسال رسالة إلكرتونية..اكتب األمر التايل: echo 'This is the messege body' mail -s 'Subject' another-user@gmail.com رشح األمر: 'This is the messege body' 'Subject' another-user@gmail.com نص الرسالة عنوان الرسالة الربيد اإللكرتوين للم رس ل إليه وأيضا بإمكانك إرسال بعض املرفقات مثل الصور والفيديو وملفات أخرى من خالل األمر التايل: sudo mpack -s "Subject" /home/pi/file another-user@ gmail.com 233
رشح األمر: "Subject" /home/pi/file another-user@gmail.com عنوان الرسالة امللف الذي تود إرساله الربيد اإللكرتوين للم رس ل إليه مالحظة إذا مل يتم إرسال الرسالة اإللكرتونية فقم بإعادة تشغيل خدمة الربيد اإللكرتوين postfix من خالل األمر التايل: sudo /etc/init.d/postfix restart ثم حاول اآلن إعادة إرسال الرسالة اإللكرتونية مرة أخرى. 234
سلسلة أوامر لينكس أوامر لينكس )7( أوامر لينكس هي األوامر التي ت كت ب يف سطر األوامر. )Terminal( األمر )tar( يقوم هذا األمر بأرشفة ملفات مجلد ما إىل ملف إرشيف مضغوط ويتم استخدامه من خالل كتابة األمر التايل: tar czvf desktop.tgz /home/pi/desktop desktop.tgz ملف اإلرشيف املضغوط الذي يتم تخزين امللفات فيه املجلد املراد أرشفة ملفاته /home/pi/desktop
استخراج امللفات من اإلرشيف باإلمكان استخراج ملفات إرشيف ما إىل مجلد وذلك من خالل كتابة األمر التايل: tar xzvf desktop.tgz ملف اإلرشيف املضغوط الذي desktop.tgz يتم استخراج ملفاته إىل مجلد
237
تحد ي
ا ت
تحدي 1: إنذار درجة الحرارة بالصوت عىل شكل مستويات قم بإنشاء مرشوع باستخدام الرازبريي باي يقوم بقراءة درجة الحرارة ويتم إصدار إنذار صويت من خالل نطق درجة الحرارة عند مستويات محددة. مثال عند درجة حرارة 40 مثال تقوم الرازبريي باي بإصدار صوت يقول )Temperature is 40 degrees. It is hot( عند درجة حرارة 16 تقوم الرازبريي باي بإصدار صوت يقول )Temperature is 16 degrees. It is cold(
تحدي 2: إنذار املسافة قم بإنشاء مرشوع باستخدام الرازبريي باي يقوم بعمل نظام إنذار للسيارة بحيث إذا اقرتبت السيارة من جسم ما يتم إصدار طنني صويت كلام زادت املسافة زادت رسعة وقوة الطنني الصويت.
تحدي 3: التحكم برسعة دوران املروحة بارتفاع درجة الحرارة قم بإنشاء مرشوع باستخدام الرازبريي باي يقوم بالتحكم برسعة دوران املروحة من خالل قيمة درجة الحرارة إذا زادت درجة الحرارة تزيد رسعة دوران املروحة والعكس صحيح.
تحدي 4: املراقب اآليل قم بإنشاء مرشوع باستخدام الرازبريي باي يعمل كمراقب آيل يف مكان ما )غرفة مثال( بحيث إذا دخل شخص ما إىل الغرفة تقوم الرازبريي بتصوير املكان وإرسال الصورة عن طريق اإلمييل.
النهاية يف الختام نرجو أن تكون قد استفدت من رحلتك معنا. وقبل أن نودعك ننبهك إىل الحقيقة التالية: بإمكانك أن تقرأ 100 كتاب عن فنون القنص والرماية ولكن ذلك لن يجعل منك قناصا ماهرا املهارة تأيت باملامرسة.. إن كنت تريد أن تصبح قناصا فعليك مبامرسة القنص والرماية نفس األمر ينطبق عىل املهارات التي مررت عليها يف هذا الكتاب. قوتها تأيت من خالل التجربة واملامرسة املستمرة أنت لها! نرتكك يف حفظ الله 244
عن القرية الهندسية نحن يف القرية الهندسية نحلم بجيل من األطفال والشباب يجد متعته يف العمل وا كتساب املعرفة. نحلم مبستقبل مرشق ينافس فيه ا بناؤنا عباقرة العامل ويتفوقون عليهم بجد وشغف ولهذا نعمل جاهدين عىل تقديم العلوم بطريقة مسلية تنافس البدائل املتوفرة من ا لعاب الفيديو ومشاهدة التلفاز. العامل من حولنا يتطور برسعة رهيبة يف مختلف مجاالت التكنولوجيا الرقمية واإللكرتونية ومن واجبنا ا ن نسعى ملواكبة التطور والحداثة ليس بالقيل والقال وا منا بالعلم والعمل.ومعا ميكننا ا ن نصنع التغيري! فهد بن سعيد بن محمد السيايب الري يس التنفيذي للقرية الهندسية 245
شكر وعرفان نخص بالشكر للمدربني الرائعني عىل مراجعتهم للكتاب إسحاق الراشدي سليامن الحبيس سليم الراشدي وكل من كان له بصمة أو ملسة خالل مراحل تأليف وتنفيذ تجارب الكتاب
إصداراتنا احرتف سكراتش املتحكامت الناشئة تروس يف عامل اإللكرتونيات P4K احرتف األردوينو موسوعة اإللكرتونيات املشاريع اإللكرتونية احرتف الرازبريي باي احرتف األوتوكاد أساسيات اإللكرتونيات احرتف الفيجوال بيسك احرتف امليكروبيسك احرتف CC+
نرجو أن نكون قد استطعنا إفادتكم وإمتاعكم. وملزيد من املعلومات وللتحقق من إجاباتكم زوروا موقعنا عىل اإلنرتنت www.ev-center.com كام يسعدنا قراءة آرائكم وتعليقاتكم يف حساباتنا عىل شبكات التواصل اإلجتامعي عرب الوسم #مربمجو_املستقبل +968 22027662 +968 97377800 www.ev-center.com info@ev-center.com @Ev_centers Engineering Village Engineering Village
امل راجع املوقع الرسمي للرازبريي باي www.raspberrypi.org كتاب رازبريي باي ببساطة للمؤلف عبدالله عيل عبدالله دورة الرازبريي باي القرية الهندسية صيف 2015 موقع lawrencematthew.wordpress www.lawrencematthew.wordpress.com موقع spotpear www.spotpear.com موقع wolfpaulus www.wolfpaulus.com 250
امل راجع كتاب Raspberry Pi Cookbook for Python Programmers للمؤلف Tim Cox كتاب Raspberry Pi The Complete Manual للمؤلف Russell Barnes كتاب Raspberry Pi For Dummies للمؤلفني Sean McManus و Mike Cook كتاب Raspberry_Pi_Projects_for_the_Evil_Genius للمؤلف Donald Norris 251
رقم اإليداع : 206/2016